硬件管理平台-硬件产品库-日志模块
硬件管理平台-硬件产品库-日志模块
log4net
本项目使用的是log4net,实际上没有什么原因,也没有怎么进行选型,因为他比较符合log4j,因此选择了log4net,的确有些草率。
随着log4j爆出了大漏洞,只能希望log4net是没有的。
(资料图片)
使用范围
使用log4net最主要是给硬件项目使用的,因为硬件项目是反射的代码,在现场时除了网关项目外,内部的代码是最难跟踪的,运行期间如果出现问题我们也无法还原,所以log4net主要用于硬件项目。
正文
在硬件项目中我们引用log4net模块,这样有个好处是可以定位到具体项目的位置,所以每个项目都需要引用一次log4net模块。
通过使用Nuget添加log4net的依赖
在HardwareGatewayProductization项目中添加log4net.config文件,并将其属性复制到输出路径改为:如果较新则复制。
log4net.config配置文件信息为
该xml表述了有两种类型的logger,分别为logerror和logerinfo,分别代表错误日志和日常输出日志。
在HardwareGatewayProductization项目的Properties->AssemblyInfo.cs添加
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
在HardwareGatewayProductization项目中添加log4net的声明,如果不添加系统会默认不引用,这样子就导致了硬件项目也无法引用成功
#region 添加log日志变量readonly ILog _loginfo = LogManager.GetLogger("loginfo");readonly ILog _logerror = LogManager.GetLogger("logerror");#endregion
综上所述:最外层的项目(启动项目)必须将log4net的配置,引用,声明都走完,其子项目才能使用,否则无法生效,而且还不会报错。
只能通过调试发现_loginfo的相关属性都为false
而真正成功时_loginfo的属性下图所示:
在空调硬件项目中添加代码:TestAirConditionClient文件中添加logger的引用
#region 添加log日志变量readonly ILog _loginfo = LogManager.GetLogger("loginfo");readonly ILog _logerror = LogManager.GetLogger("logerror");#endregion
我们以GetHardwareInfo方法为例,添加一个调用
public override HardwareProperties GetHardwareInfo(){ _loginfo.Info("空调测试的日志例子"); return new HardwareProperties("04", "0401", IAriConditionClient.Type, Model, null, null, Version, Describe, typeof(AirConditionInfo), OperationFun, null, TimeingFun, null);}
在UtilsLibaray也添加log4net的引用,将其他项目中关于log4net的属性复制到本地都改为false。
写在最后
运行后会发现在产品库文件中新建了一个WebLog文件夹,其中LogInfo文件夹下的日志如下:
日志时间:2023-08-05 17:27:00,167 [1] 日志级别:INFO 消息描述:空调测试的日志例子 [_01TestAirConditionLibrary.TestAirConditionClient.GetHardwareInfo(G:\Working\笔记\MD笔记\开源项目\HardwareGatewayProject\Hardware\AirConditionLibrary\01TestAirCondition\TestAirConditionClient.cs:30)] 日志时间:2023-08-05 17:27:00,181 [1] 日志级别:ERROR 消息描述:空调测试的日志例子 [_01TestAirConditionLibrary.TestAirConditionClient.GetHardwareInfo(G:\Working\笔记\MD笔记\开源项目\HardwareGatewayProject\Hardware\AirConditionLibrary\01TestAirCondition\TestAirConditionClient.cs:31)]
可直接定位到具体文件的特定行,这样有助于我们查找问题。
下一篇:最后一页
相关文章
精彩推送
X 关闭
X 关闭