硬件管理平台-硬件产品库-日志模块

时间:2023-08-05 18:33:56 来源: 博客园

硬件管理平台-硬件产品库-日志模块

log4net

本项目使用的是log4net,实际上没有什么原因,也没有怎么进行选型,因为他比较符合log4j,因此选择了log4net,的确有些草率。

随着log4j爆出了大漏洞,只能希望log4net是没有的。


(资料图片)

使用范围

使用log4net最主要是给硬件项目使用的,因为硬件项目是反射的代码,在现场时除了网关项目外,内部的代码是最难跟踪的,运行期间如果出现问题我们也无法还原,所以log4net主要用于硬件项目。

正文

在硬件项目中我们引用log4net模块,这样有个好处是可以定位到具体项目的位置,所以每个项目都需要引用一次log4net模块。

  1. 通过使用Nuget添加log4net的依赖

  2. HardwareGatewayProductization项目中添加log4net.config文件,并将其属性复制到输出路径改为:如果较新则复制。

    log4net.config配置文件信息为

          

    该xml表述了有两种类型的logger,分别为logerrorlogerinfo,分别代表错误日志和日常输出日志。

  3. HardwareGatewayProductization项目的Properties->AssemblyInfo.cs添加

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
  4. HardwareGatewayProductization项目中添加log4net的声明,如果不添加系统会默认不引用,这样子就导致了硬件项目也无法引用成功

    #region 添加log日志变量readonly ILog _loginfo = LogManager.GetLogger("loginfo");readonly ILog _logerror = LogManager.GetLogger("logerror");#endregion

    综上所述:最外层的项目(启动项目)必须将log4net的配置,引用,声明都走完,其子项目才能使用,否则无法生效,而且还不会报错。

    只能通过调试发现_loginfo的相关属性都为false

    而真正成功时_loginfo的属性下图所示:

  5. 在空调硬件项目中添加代码: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);}
  6. 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)] 

可直接定位到具体文件的特定行,这样有助于我们查找问题。

标签:

相关文章

社会面清零后第十天,三问吉林省复工复产怎样了

新华社长春4月23日电 题:社会面清零后第十天,三问吉林省复工复产怎样了 新华社记者段续、张建、赵丹丹...

来源:2022-04-24

青海海北州门源县发生3.9级地震 震源深度10千米

4月23日电 据国家地震台网官方微博消息,中国地震台网正式测定:04月23日22时07分在青海海北州门源县(...

来源:2022-04-24

山西太原万柏林区报告1例无症状感染者 公布行程轨迹

(抗击新冠肺炎)山西太原万柏林区报告1例无症状感染者 公布行程轨迹 太原4月23日电 (记者 李新锁)山西...

来源:2022-04-24

上海战疫:从严从重从快查处食品安全违法行为

(抗击新冠肺炎)上海战疫:从严从重从快查处食品安全违法行为 上海4月23日电 (记者 许婧)近日,上海出现...

来源:2022-04-24

杭州本轮疫情已发现98例阳性感染者 有进一步扩散可能

杭州4月23日电(张煜欢 崔倩娴)23日,记者从杭州市新冠肺炎疫情防控工作新闻发布会上获悉,截至23日18时...

来源:2022-04-24

精彩推送

X 关闭

X 关闭