一、背景
前排提示,觉得墨迹的朋友可以直接看解决方法部分!
啊,许久没有这般耗时耗力了。。。鼓捣了一下午,不断地查阅资料,终于成功把log4net配置成功了。不过,笔者对log4net的底层并不了解,这里只是简单记录学习过程,给同样的初学者提供些许方便。
二、探索过程
在查阅资料的过程中,发现了一些概念,但最后没用上。可能是版本更迭的原因,更有可能是单纯地没用上而已。
1.log4net.config配置文件中的节点配置,不加也可
<configsections>
<section name="log4net" type="log4net.config.log4netconfigurationsectionhandler, log4net" />
</configsections>
2.同样是配置文件,里面的logger。没有特殊需求的话,不用单独设置logger标签,共用root标签配置就可以了
3.现在用的版本是.net core 5.0或6.0之类的,.net framework不太用了,而这两个大版本框架的目录结构有一些不同。网上的一些log4net攻略就是在framework版本基础上做的,里面会看见这样的一句话
“可以在项目的assemblyinfo.cs文件里添加以下的语句”
[assembly:log4net.config.domconfigurator(configfile="filename",,watch=true/false)]
这个文件在core中是没有的,然后笔者又去千方百计地寻找这句话,在core版本中应该放在哪里
最终得到的结果是,这句话在core版本,要以“标签”的形式,写在namespace上面,全局写一次就可以了。
笔者试验后,的确如此。当时成功之后欣喜若狂。可后来发现,这句话也用不上,完全不用加。。。。。
4.还有一个坑。笔者当时试验是在winform上做的,那配置标签里的就用LogFileAppender来输出到本地文件里就好。然后,笔者发现用ConsoleAppender可以输出log到命令行里,但是怎么试验都未成功。后来才发现,输出到命令行是指命令行项目,而不是说会输出到项目的output中。。。。。。
5.log建库,这个也用不上,当然只是自己用不上
三、解决办法
1.先用nuget下载log4net的包(VS里已经集成了nuget功能),项目能正常引用就是成功了
2.这里笔者给出网上摘抄的配置文件,其中有一些笔者自己的修改,但不包括数据库配置。关于配置文件的说明网上有很多,大家可以自行查找。只是想练手的小伙伴,直接复制去用就好。生成的log文件在运行目录里面
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net >
<appender name ="LogFileAppender" type ="log4net.Appender.FileAppender" >
<file value ="log4netfile.txt" />
<appendToFile value ="true" />
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%date %-5level %logger property:[%property{NDC}] - description :%message%newline" />
</layout >
</appender >
<appender name ="ConsoleAppender" type ="log4net.Appender.ConsoleAppender" >
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout >
</appender >
<appender name ="EventLogAppender" type ="log4net.Appender.EventLogAppender" >
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout >
</appender >
<appender name ="AdoNetAppender_Access" type ="log4net.Appender.AdoNetAppender" >
<connectionString value ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" />
<commandText value ="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" />
<parameter >
<parameterName value ="@logDate" />
<dbType value ="String" />
<size value ="240" />
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%date" />
</layout >
</parameter >
<parameter >
<parameterName value ="@thread" />
<dbType value ="String" />
<size value ="240" />
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value ="@logLevel" />
<dbType value ="String" />
<size value ="240" />
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%level" />
</layout>
</parameter>
<parameter>
<parameterName value ="@logger" />
<dbType value ="String" />
<size value ="240" />
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value ="@message" />
<dbType value ="String" />
<size value ="240" />
<layout type ="log4net.Layout.PatternLayout" >
<conversionPattern value ="%message" />
</layout>
</parameter>
</appender>
<root >
<level value="ALL"/>
<appender-ref ref ="LogFileAppender" />
<appender-ref ref ="ConsoleAppender" />
<appender-ref ref ="EventLogAppender" />
<appender-ref ref="AdoNetAppender_Access" />
</root>
</log4net>
</configuration>
3.在主方法中,初始化配置
XmlConfigurator.Configure(new FileInfo("你的log4net.config配置文件位置"));
4.在想要使用log的类中,先实例化log,然后调用对应的方法,输入自己需要的信息即可文章来源:https://www.toymoban.com/news/detail-440832.html
//这是实例化
private static readonly ILog log = LogManager.GetLogger(typeof(这里放入当前类名));
//这是使用
log.info("自己需要的信息");
5.以上这些步骤就可以使用log了。这里使用的是log4net官方提供的方法,就是实例化那步。如果你有更细致的需求,可以自己写个封装,然后实例化自己的。文章来源地址https://www.toymoban.com/news/detail-440832.html
到了这里,关于C# .Net Core log4net 使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!