VisionPro Designer中使用Log4net实现日志功能

log4net是一个可以帮助程序员把日志信息输出到各种 不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自己提供的debug类和trace 类的功能更多。在康耐视Designer中使用的方法如下:

1.引用程序集并添加命名空间

在“外部程序集”中添加log4net路径–>在“脚本”页中添加对程序集的引用(包括XML程序集)–>添加所需命名空间
添加log4net程序集
引用程序集以及命名空间
添加命名空间

2.定义全局变量

在“标记管理器”页创建Log对象,标记管理器中的变量相当于全局变量,选择数据类型为Log4net.ILog,创建步骤如下图:
创建ILog对象

3.设置log格式与读取log配置文件

①创建log的配置文件(创建log4net.config文件,文件内容为对log的详细配置,具体内容如下,本例将该文件放在D盘根目录下D:log4net.config)

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3 <configSections>
 4 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
 5 </configSections>
 6 <log4net>
 7 <logger name="logerror">
 8 <level value="ERROR" />
 9 <appender-ref ref="ErrorAppender" />
10 </logger>
11 <logger name="loginfo">
12 <level value="INFO" />
13 <appender-ref ref="InfoAppender" />
14 </logger>
15 <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
16 <!--设置日志存储路径-->
17 <param name="File" value="D:\log" />
18 <!--是否追加到文件-->
19 <param name="AppendToFile" value="true" />
20 <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
21 <param name="MaxSizeRollBackups" value="100" />
22 <param name="MaxFileSize" value="1024" />
23 <!--是否只写到一个文件中-->
24 <param name="StaticLogFileName" value="false" />
25 <!--这是按日期产生文件夹,并在文件名前也加上日期-->
26 <param name="DatePattern" value="yyyyMM/dd&quot;.log&quot;" />
27 <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
28 <param name="RollingStyle" value="Date" />
29 <layout type="log4net.Layout.PatternLayout">
30 <param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异常位置:[%thread] (%file:%line) %n消息描述:%message%n异常:%exception%n%n " />
31 </layout>
32 </appender>
33 <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
34 <!--设置日志存储路径-->
35 <param name="File" value="D:\log" />
36 <!--是否追加到文件-->
37 <param name="AppendToFile" value="true" />
38 <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
39 <param name="MaxSizeRollBackups" value="100" />
40 <param name="MaxFileSize" value="1024" />
41 <!--是否只写到一个文件中-->
42 <param name="StaticLogFileName" value="false" />
43 <!--这是按日期产生文件夹,并在文件名前也加上日期-->
44 <param name="DatePattern" value="yyyyMM/dd&quot;.log&quot;" />
45 <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
46 <param name="RollingStyle" value="Date" />
47 <layout type="log4net.Layout.PatternLayout">
48 <param name="ConversionPattern" value="%n日志时间:%d [%t] 日志级别:%-5p 消息描述:%c [%x] %m " />
49 </layout>
50 </appender>
51 </log4net>
52 </configuration>

②读取log配置文件
添加启动脚本,配置log参数
脚本具体内容为:

 1 //读取log配置文件
 2 string path="D:\log4net.config";
 3 var fi = new System.IO.FileInfo(path);
 4 //调用log4net相关接口对log进行配置
 5 log4net.Config.XmlConfigurator.Configure(fi);
 6 //初始化log对象
 7 $Loginfo = log4net.LogManager.GetLogger("loginfo");
 8 //在不同线程进行写log测试
 9 $Tasks.Task.RunAsync();
10 $Tasks.Task1.RunAsync();

4.log写入

创建两个task,在各自的task中添加脚本块,将日志在不同task(不同线程)中写入,作为测试,每个脚本块写10000行数据。
在不同task中写log测试
日志内容:

在这里插入图片描述
写入第一条log与最后一条用时不到3s,共计20000条信息
日志时间:2020-11-12 13:52:45,507 [12] 日志级别:INFO 消息描述:loginfo [(null)] Test111:0----task1-----
日志时间:2020-11-12 13:52:48,302 [12] 日志级别:INFO 消息描述:loginfo [(null)] Test111:9999----task1-----

原文地址:https://www.cnblogs.com/ybqjymy/p/14266259.html