前排提示,觉得墨迹的朋友可以直接看解决方法部分!
啊,许久没有这般耗时耗力了。。。鼓捣了一下午,不断地查阅资料,终于成功把log4net配置成功了。不过,笔者对log4net的底层并不了解,这里只是简单记录学习过程,给同样的初学者提供些许方便。
在查阅资料的过程中,发现了一些概念,但最后没用上。可能是版本更迭的原因,更有可能是单纯地没用上而已。
1.log4net.config配置文件中的节点配置,不加也可
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文件在运行目录里面
3.在主方法中,初始化配置
XmlConfigurator.Configure(new FileInfo("你的log4net.config配置文件位置"));
4.在想要使用log的类中,先实例化log,然后调用对应的方法,输入自己需要的信息即可
//这是实例化
private static readonly ILog log = LogManager.GetLogger(typeof(这里放入当前类名));
//这是使用
log.info("自己需要的信息");
5.以上这些步骤就可以使用log了。这里使用的是log4net官方提供的方法,就是实例化那步。如果你有更细致的需求,可以自己写个封装,然后实例化自己的。