【发布时间】:2017-07-11 09:21:27
【问题描述】:
我正在使用以下代码使用 PRISM ILoggrFacade 在我的项目中创建日志记录。 但我不确定是最好的方法,第二件事是如何使用 CustomLogger 类日志记录,因为我无法创建日志记录。
public class CustomLogger : ILoggerFacade
{
protected static readonly ILog log = LogManager.GetLogger(typeof(CustomLogger));
public CustomLogger()
{
log4net.Config.XmlConfigurator.Configure();
}
public void Log(string message, Category category, Priority priority)
{
switch (category)
{
case Category.Debug:
log.Debug(message);
break;
case Category.Warn:
log.Warn(message);
break;
case Category.Exception:
log.Error(message);
break;
case Category.Info:
log.Info(message);
break;
}
}
}
引导程序
private readonly CustomLogger _logger = new CustomLogger();
protected override ILoggerFacade CreateLogger()
{
return _logger;
}
视图模型
logger.Log("Logging success", Category.Info, Priority.None);
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\temp\log.txt" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date [%thread] %message%newline" />
</layout>
</appender>
</log4net>
</configuration>
【问题讨论】:
-
首先,不要使用
ServiceLocator获取logger。如果您不自己实现 DI 容器,则服务定位器被认为是一种反模式。第二:您的具体问题究竟是什么? -
@dymanoid 无法创建日志文件
-
究竟出了什么问题?你有错误吗?代码是否通过但文件没有被创建?您是否在某个地方遇到异常?
-
@Metallkiller 现在我能够创建日志文件了。实际上我正在构造函数中配置我的 xml ......但是一旦我必须指定“[程序集:log4net.Config.XmlConfigurator(ConfigFile = "log4Net.config", Watch = true)]" 在程序集中
-
@Metallkiller 现在我想知道如何在我使用统一的不同模块中使用日志记录。有什么想法吗?