asp.net-core-2.0 - 如何从 .net core 2.2 中的 log4net 配置文件中获取 appender
问题描述
我在 asp.net core 2.0 中实现 log4net AsyncBufferingForwardingAppender,但我猜它不支持。
我已经在核心 2.0 中实现了 log4net RollingFileAppender,它使用 log4.net 配置成功运行。
我正在尝试以下代码:
// sLoggerName = "BasicLogger"
internal static ILog Initialize(string sLoggerName)
{
ILog objlogger = null;
try
{
#region Log4net_Configuration
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead("log4net.config"));
var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
typeof(log4net.Repository.Hierarchy.Hierarchy));
log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
#endregion
objlogger = log4net.LogManager
.GetLogger(log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
typeof(log4net.Repository.Hierarchy.Hierarchy)).Name, sLoggerName);
// Iterating through each appender
object[] objAppenders = objlogger.Logger.Repository.GetAppenders();
foreach (object item in objAppenders)
{
var objFile = item as AppenderSkeleton;
if (objFile != null)
{
objFile.ActivateOptions();
}
}
// Checking logger
if (objlogger.Logger.Name != sLoggerName)
{
objlogger = null;
}
}
catch (System.Exception)
{
// Handle exception
}
return objlogger;
}
我的 log4net.config 文件配置如下:
<?xml version="1.0"?>
<log4net>
<appender name="Basic" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs/Basic.log"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<param name="AppendToFile" value="true"/>
<param name="Threshold" value="INFO" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="300" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%date{yyyy/MM/dd HH:mm:ss,fff}	[%-5p]	[%3t]	%m%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<appender name="BasicAsyncBufferingForwarder" type="Easy.Logger.AsyncBufferingForwardingAppender">
<lossy value="false" />
<bufferSize value="500" />
<idleTime value="3000" />
<fix value="Message, ThreadName, Exception" />
<appender-ref ref="Basic" />
</appender>
<logger name="BasicLogger">
<level value="ALL" />
<appender-ref ref="BasicAsyncBufferingForwarder" />
</logger>
</log4net>
objAppenders 的计数始终为 0。
我是否缺少编码?谢谢
解决方案
请重新检查您的类型字段...
它必须是 type="Easy.Logger.AsyncBufferingForwardingAppender, XXX"
XXX = "程序集名称"
推荐阅读
- php - 如何处理过多的内存使用?我的代码导致“500 内部服务器错误”!
- javascript - 浏览器的本地存储无法正常工作
- python - 当前,python 3.7 是否适合 NLP 和机器学习?我应该使用更好的版本吗?
- c# - CV_8U 类型和大小的可选向量
+ - java - 在 Tomcat 中扩展 ValveBase 总是为 request.getRemoteUser() 返回 null
- python - 迭代多个 dat 文件,更新并保存在单独的目录中作为单独的文件
- jquery - 在 JQuery 委托中触发表单提交
- spring-data-jpa - 当列值具有选项卡时,Spring data jpa order by 不起作用
- r - 从 Postgresql 读取大对象时的 R 内存分配
- python - 试图简化将字符分配给数字