集成Unity日志输出可以分为两个部分 一、下载log4net和Unity的配置 下载log4net dll至Assets目录下的References文件夹中,如下图:
Unity中File->Build Settings->PlayerSettings->Player中的设置,Api Compatibility Level 设置为.NET 4.x如下图:
二、集成log4net的代码及log4net配置文件
log4net配置文件名为:log4net.config。文件内容如下:
Unity日志集成类UnityLogger代码如下:
using log4net;
using UnityEngine;
public static class UnityLogger
{
public static void Init() {
Application.logMessageReceived += onLogMessageReceived;//添加unity日志监听
Debug.Log("日志初始化");
}
private static ILog log = LogManager.GetLogger("FileLogger");//FileLogger
private static void onLogMessageReceived(string condition,string stackTrace,LogType type) {
switch (type) {
case LogType.Error:
log.ErrorFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));
break;
case LogType.Assert:
log.DebugFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));
break;
case LogType.Exception:
log.FatalFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));
break;
case LogType.Warning:
log.WarnFormat("{0}\r\n{1}", condition, stackTrace.Replace("\n", "\r\n"));
break;
default:
log.Info(condition);
break;
}
}
}
初始化UnityLogger,初始化代码放在整个游戏的一个MonoBehaviour的Start中,代码如下:
{
//ApplicationLogPath和LogFileName在log4net.config中使用
FileInfo file = new System.IO.FileInfo("log4net.config");//获取log4net配置文件
GlobalContext.Properties["ApplicationLogPath"] = Path.Combine(file.Directory.FullName,"Log");//日志生成的路径
GlobalContext.Properties["LogFileName"] = "log";//生成日志的文件名
log4net.Config.XmlConfigurator.ConfigureAndWatch(file);//加载log4net配置文件
UnityLogger.Init();
}