IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> net6 控制台+ log4net+写数据库+自定义字段 小结 -> 正文阅读

[开发测试]net6 控制台+ log4net+写数据库+自定义字段 小结

使用过程

1、引用log4net、system.Data.SqlClient

2、创建log4net.config文件

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
	<!--根配置-->
	<root>
		<!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
		<level value="ERROR"/>
		<level value="WARN"/>
		<level value="INFO"/>
		<level value="DEBUG"/> 
		<level value="ALL"/> 
		
		<appender-ref ref="ErrorLog" />
		<appender-ref ref="WarnLog" />
		<appender-ref ref="InfoLog" />
		<appender-ref ref="DebugLog" /> 
		<appender-ref ref="ADONetAppender" /> 
	</root>

	<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
	<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
		<!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库-->
		<bufferSize value="0" />
		<!--日志数据库连接串-->
		<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
		<connectionString value="data source=localhost;initial catalog=test;integrated security=false;persist security info=True;User ID=dev1;Password=devtest" />
	 	<!--日志数据库脚本-->
		<commandText value="INSERT INTO uLog ([FDate],[FThread],[FLevel],[FLogger],[FMessage],[FException],[FIP],[FModel]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception,@ip,@model)"/>
		<!--日志时间LogDate -->
		<parameter>
			<parameterName value="@log_date" />
			<dbType value="DateTime" />
			<layout type="log4net.Layout.RawTimeStampLayout" />
		</parameter>
		<!--线程号-->
		<parameter>
			<parameterName value="@thread" />
			<dbType value="String" />
			<size value="255" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%thread" />
			</layout>
		</parameter>
		<!--日志类型LogLevel -->
		<parameter>
			<parameterName value="@log_level" />
			<dbType value="String" />
			<size value="200" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%level" />
			</layout>
		</parameter>
		<!--日志名称-->
		<parameter>
			<parameterName value="@logger" />
			<dbType value="String" />
			<size value="500" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%logger" />
			</layout>
		</parameter>
		<parameter>
			<parameterName value="@message" />
			<dbType value="String" />
			<size value="3000" />
			<layout type="log4net.Layout.PatternLayout">
				<conversionPattern value="%message" />
			</layout>
		</parameter>
		<parameter>
			<parameterName value="@exception" />
			<dbType value="String" />
			<size value="4000" />
			<layout type="log4net.Layout.ExceptionLayout" />
		</parameter>  
		<parameter>
			<parameterName value="@ip" />
			<dbType value="String" />
			<size value="4000" />
			<layout type="log4netConsoleApp.ActionLayoutPattern">
				<conversionPattern value="%customInfo{ip}" />
			</layout>
		</parameter>  
		<parameter>
			<parameterName value="@model" />
			<dbType value="String" />
			<size value="4000" />
			<layout type="log4netConsoleApp.ActionLayoutPattern">
				<conversionPattern value="%customInfo{model}" />
			</layout>
		</parameter>  
	</appender>
	<!-- 错误 Error.log-->
	<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="C:\logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Error.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>

	<!-- 警告 Warn.log-->
	<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="C:\logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Warn.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>

	<!-- 信息 Info.log-->
	<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="C:\logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Info.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="INFO" />
		</filter>
	</appender>

	<!-- 调试 Debug.log-->
	<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="C:\logs\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="/yyyy-MM-dd/'Debug.log'"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="DEBUG" />
		</filter>
	</appender>

</log4net>

3、创建自定义用类ActionLoggerInfo

  public class ActionLoggerInfo
    {
        public ActionLoggerInfo()
        {

        }
        public ActionLoggerInfo(string? fip, string? fmodel)
        {
            this.FIP = fip;
            this.FModel = fmodel;

        }
        public string? FIP { get; set; }
        public string? FModel { get; set; }
    }

4、创建类ActionLayout?

    public class ActionLayout : log4net.Layout.PatternLayout
    {
        public ActionLayout()
        {
            this.AddConverter("customInfo", typeof(CustLogConverter));
        }
    }

5、创建类CustLogConverter

   protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
        {
            var result = loggingEvent.MessageObject as ActionLoggerInfo;


            if (result != null)
            {

                switch (this.Option.ToLower())
                {
                    case "ip":
                        writer.Write(result.FIP);
                        break;
                    case "model":
                        writer.Write(result.FModel);
                        break;
                    default:
                        writer.Write(SystemInfo.NullText);
                        break;
                }
                // writer.Write($"FIP:{result.FIP}");
            }
            else
            {
                writer.Write("");
            }
        }

6、创建共公类LoggerHelper

7、控制台使用

using log4netConsoleApp;
 var t=new LoggerHelper ();
LoggerHelper.Info(new ActionLoggerInfo { FIP = "22.222.33.22",FModel ="model" }) ;

下载地址:(4条消息) net6控制台+log4net+写数据库+自定义字段-C#文档类资源-CSDN文库

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:52:26  更:2022-03-12 17:52:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:24:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码