2.1 自定义日志系统-log4net
说明
- Prism中如果把日志级别设定为DEBUG,会显示框架加载信息
- Prism默认是没有日志系统的
步骤
- 下载log4net包
Install-Package log4net;
- 在app.config中配置日志系统需要的信息
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--使用log\\代表存储在log文件夹下-->
<file value="log\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--这里必须添加'.txt'代表创建日志后缀-->
<datePattern value="yyyyMMdd'.txt'"/>
<staticLogFileName value="false" />
<maximumFileSize value="10MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="日期:%date%n线程ID:[%thread]%n日志等级:%-5level%n内容:%message%newline%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
</startup>
</configuration>
- 在AssemblyInfo.cs中设定使用app.config的配置信息
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
- 在项目中使用log4net,
using Prism.Logging;
using log4net;
namespace AutoSeller
{
public class LogggerAdapter : ILoggerFacade
{
private static readonly ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public void Log(string message, Category category, Priority priority)
{
switch (category)
{
case Category.Debug:
_log.DebugFormat(message, category.ToString(), (int)priority);
break;
case Category.Exception:
_log.ErrorFormat(message, category.ToString(), (int)priority);
break;
case Category.Info:
_log.InfoFormat(message, category.ToString(), (int)priority);
break;
case Category.Warn:
_log.WarnFormat(message, category.ToString(), (int)priority);
break;
default:
break;
}
}
}
}
- 在bootstrapper中重写CreateLogger方法,创建日志系统。
using Prism.Logging;
namespace AutoSeller
{
public partial class SecondaryCacheBootstrapper
{
private readonly LoggerAdapter _logger = new LoggerAdapter();
protected override ILoggerFacade CreateLogger()
{
return _logger;
}
}
}
log4net说明
log4net支持记录5中类型日志消息:
- FATAL
- ERROR
- WARN
- INFO
- DEBUG
对应在程序中使用同名函数记录日志,如记录INFO类型日志使用 log .Info(msg)。我们可能不需要显示所有类型日志,在开发我们需要显示调试日志信息,错误日志信息,而在实际部署中只需显示错误日志消息即可。可以通过设定日志等级实现上述需求,log4net支持7个等级的日志:
- OFF -没有消息
- FATAL
- ERROR
- WARN
- INFO
- DEBUG
- ALL -所有消息
当我们在配置文件中配置日志等级为DEBUG时,
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
所有FATAL,ERROR,WARN,INFO,DEBUG类型消息都会被记录。