<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="${APPDATA}\IMPlayer\Log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="0" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
1、这个是log4net的配置文件,可以写在app.config中,但是无论是独立创建一个log4net项目也好,还是在同一个项目下引用log4net,都需要将app.config这个文件输出到程序的运行目录,否则可能会因为无法读取配置文件而导致创建日志失败;
2、以下是日志输入调用的类,在项目调用loghelper.Instance.WriteLog(typeof(*),msg)就行了;
public class loghelper
{
private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private static loghelper _instance;
public static loghelper Instance
{
get { return _instance ?? (_instance = new loghelper()); }
}
private loghelper()
{
var configFileInfo = new FileInfo("App.config");
log4net.Config.XmlConfigurator.ConfigureAndWatch(configFileInfo);
}
#region static void WriteLog(Type t, Exception ex)
public void WriteLog(Type t, Exception ex)
{
Log.Error(t, ex);
}
#endregion
#region static void WriteLog(Type t, string msg)
public void WriteLog(Type t, string msg)
{
Log.Error(msg);
}
#endregion
}
3、进过测试后发现,上面配置问题,只对单一进程有用,如果两个进程都需要输出日志信息,那就可能会产生2个文件,添加如下一行配置就可以解决问题:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />