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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> WPF下使用Log4Net将日志保存到MySQL -> 正文阅读

[大数据]WPF下使用Log4Net将日志保存到MySQL

1.通过nuget安装Log4net和mysql.data

?

2.在项目目录下新建Log4net.config?

3.log4net.config内容如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<log4net>

		<!-- 输出模式定义 -->
		<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
			<!--日志路径: 兼容相对路径和绝对路径,此语句等价于<File value="Logs\"/> -->
			<param name= "File" value= "Logs\"/>
			<!--是否是向文件中追加日志-->
			<param name= "AppendToFile" value= "true"/>
			<!--保留天数-->
			<param name= "MaxSizeRollBackups" value= "-1"/>
			<param name="MaximumFileSize" value="3MB" />
			<!--<param name="MaxTotalLogFiles" value="3MB" />-->
			<!--日志文件名是否固定不变的-->
			<param name= "StaticLogFileName" value= "false"/>
			<!--日志文件名格式为:2017-01-12_Info.log-->
			<param name= "DatePattern" value= "yyyy-MM-dd/yyyy-MM-dd HH_'Info.log'"/>
			<!--日志根据日期滚动-->
			<param name= "RollingStyle" value= "Date"/>
			<!-- 写入记录文件时的格式%p应该指模式如WARN,%m应该指Message值,%n应该是换行的意思。接着输出Exception -->
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" />
			</layout>
			<!-- 此模式输出的级别范围 -->
			       <!-- FATAL > ERROR > WARN > INFO > DEBUG --> 
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="INFO" />
				<levelMax value="INFO" />
			</filter>
		</appender>

		<appender name="WarnAppender" type="log4net.Appender.RollingFileAppender">
			<File value= "Logs\"/>
			<param name= "AppendToFile" value= "true"/>
			<param name= "MaxSizeRollBackups" value= "10"/>
			<!-- 能保存的文件最大值,假设某次输出后该文件如mm_warn.log的大小将会超过最大值3KB,则此次输出仍有效,但是下次输出则会将该文件重命名为mm_warn.log.1,且生成一个新的mm_warn.log文件以供记录输出内容。 -->
			<param name="MaximumFileSize" value="3MB" />
			<!--<param name="MaxTotalLogFiles" value="3MB" />-->
			<param name= "StaticLogFileName" value= "false"/>
			<param name= "DatePattern" value= "yyyy-MM-dd/yyyy-MM-dd HH_'Warn.log'"/>
			<param name= "RollingStyle" value= "Composite"/>
			<!-- 写入记录文件时的格式 -->
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" />
			</layout>
			<!-- 此模式输出的级别范围 -->
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="WARN" />
				<levelMax value="WARN" />
			</filter>
		</appender>

		<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
			<File value= "Logs\"/>
			<param name= "AppendToFile" value= "true"/>
			<param name= "MaxSizeRollBackups" value= "10"/>
			<!-- 能保存的文件最大值,假设某次输出后该文件如mm_warn.log的大小将会超过最大值3KB,则此次输出仍有效,但是下次输出则会将该文件重命名为mm_warn.log.1,且生成一个新的mm_warn.log文件以供记录输出内容。 -->
			<param name="MaximumFileSize" value="3MB" />
			<!--<param name="MaxTotalLogFiles" value="3MB" />-->
			<param name= "StaticLogFileName" value= "false"/>
			<param name= "DatePattern" value= "yyyy-MM-dd/yyyy-MM-dd HH_'Error.log'"/>
			<param name= "RollingStyle" value= "Composite"/>
			<!-- 写入记录文件时的格式 -->
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" />
			</layout>
			<!-- 此模式输出的级别范围 -->
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="ERROR" />
				<levelMax value="ERROR" />
			</filter>
		</appender>

		<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
			<File value= "Logs\"/>
			<param name= "AppendToFile" value= "true"/>
			<param name= "MaxSizeRollBackups" value= "10"/>
			<!-- 能保存的文件最大值,假设某次输出后该文件如mm_warn.log的大小将会超过最大值3KB,则此次输出仍有效,但是下次输出则会将该文件重命名为mm_warn.log.1,且生成一个新的mm_warn.log文件以供记录输出内容。 -->
			<param name="MaximumFileSize" value="3MB" />
			<!--<param name="MaxTotalLogFiles" value="3MB" />-->
			<param name= "StaticLogFileName" value= "false"/>
			<param name= "DatePattern" value= "yyyy-MM-dd/yyyy-MM-dd HH_'Debug.log'"/>
			<param name= "RollingStyle" value= "Composite"/>
			<!-- 写入记录文件时的格式 -->
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" />
			</layout>
			<!-- 此模式输出的级别范围 -->
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="DEBUG" />
				<levelMax value="DEBUG" />
			</filter>
		</appender>

		<appender name="FatalAppender" type="log4net.Appender.RollingFileAppender">
			<File value= "Logs\"/>
			<param name= "AppendToFile" value= "true"/>
			<param name= "MaxSizeRollBackups" value= "10"/>
			<!-- 能保存的文件最大值,假设某次输出后该文件如mm_warn.log的大小将会超过最大值3KB,则此次输出仍有效,但是下次输出则会将该文件重命名为mm_warn.log.1,且生成一个新的mm_warn.log文件以供记录输出内容。 -->
			<param name="MaximumFileSize" value="6MB" />
			<!--<param name="MaxTotalLogFiles" value="3MB" />-->
			<param name= "StaticLogFileName" value= "false"/>
			<param name= "DatePattern" value= "yyyy-MM-dd/yyyy-MM-dd HH_'Fatal.log'"/>
			<param name= "RollingStyle" value= "Composite"/>
			<!-- 写入记录文件时的格式 -->
			<layout type="log4net.Layout.PatternLayout">
				<param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.fff} %-8p %m%n" />
			</layout>
			<!-- 此模式输出的级别范围 -->
			<filter type="log4net.Filter.LevelRangeFilter">
				<levelMin value="FATAL" />
				<levelMax value="FATAL" />
			</filter>
		</appender>

		<appender name="AdoNetAppender12" type="log4net.Appender.AdoNetAppender">
			<bufferSize value="0" />
		
			<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
	
		
			<connectionString value="server=127.0.0.1;port=3306;user=root;password=123456; database=smartlabel;" providerName="MySql.Data.MySqlClient;" />
		
			<commandText value="INSERT INTO Log (Date,Thread,Level,Logger,Message,Exception) VALUES (@log_date,@thread,@log_level,@logger, @message, @exception);" />
			<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>
			<parameter>
				<parameterName value="@log_level" />
				<dbType value="String" />
				<size value="50" />
				<layout type="log4net.Layout.PatternLayout">
					<conversionPattern value="%level" />
					<!--%level-->
				</layout>
			</parameter>
			<parameter>
				<parameterName value="@logger" />
				<dbType value="String" />
				<size value="255" />
				<layout type="log4net.Layout.PatternLayout">
					<conversionPattern value="%logger" />
				</layout>
			</parameter>
			<parameter>
				<parameterName value="@message" />
				<dbType value="String" />
				<size value="4000" />
				<layout type="log4net.Layout.PatternLayout">
					<conversionPattern value="%message" />
				</layout>
			</parameter>
			<parameter>
				<parameterName value="@exception" />
				<dbType value="String" />
				<size value="2000" />
				<layout type="log4net.Layout.ExceptionLayout" />
			</parameter>

			<!--<logger name="logadonet">
				<level value="ALL"/>
				<appender-ref ref="AdoNetAppender"/>
			</logger>-->
		</appender>
		<!-- Setup the root category, add the appenders and set the default level -->
		<root>
			<level value="ALL" />
			<!--<appender-ref ref="ConsoleAppender" />-->
			<appender-ref ref="DebugAppender" />
			<appender-ref ref="InfoAppender" />
			<appender-ref ref="WarnAppender" />
			<appender-ref ref="ErrorAppender" />
			<appender-ref ref="FatalAppender" />
			<!--<appender-ref ref="RollingLogFileAppender" />-->
			<appender-ref ref="AdoNetAppender12" />

		</root>

		<!--<logger name="*">
			<level value="ALL" />
			<appender-ref ref="AdoNetAppender11" />
		</logger>-->
	</log4net>
</configuration>

4.在app.config?中加入如下内容 ,appsettings中打开log4net调试功能

	<configSections>
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
	</configSections>

<add key="log4net.Internal.Debug" value="true"/>

5.在assemblyinfo.cs中加入如下内容

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "ConfigFile/log4net.config", ConfigFileExtension = "config", Watch = true)] 

6.在app.xaml.cs中加入

      public static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

?7.在代码中使用

App.Log.Error("日志1");

App.Log.Info("日志1");

App.Log.Warn("日志1");

8.保存到数据效果

?9.数据库格式

?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-15 00:05:37  更:2022-04-15 00:11:45 
 
开发: 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/24 2:47:20-

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