WPF下使用Log4Net将日志保存到MySQL

3 篇文章 0 订阅

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.数据库格式

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是.NET Framework 4.7.2 WPF项目使用Log4Net记录日志的具体步骤: 步骤1:安装Log4Net NuGet包 在Visual Studio中打开项目,右键单击项目名称,选择“管理NuGet程序包”。在NuGet程序包管理器中搜索Log4Net,安装最新版本的Log4Net。 步骤2:创建Log4Net配置文件 在项目中创建一个名为“log4net.config”的XML文件,并将其设置为“始终复制”以确保它在生成期间被复制到输出目录中。以下是一个示例配置文件: ``` <?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="logs\myapp.log" /> <appendToFile value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="5" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level [%thread] %logger - %message%newline" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="RollingLogFileAppender" /> </root> </log4net> ``` 该配置文件指定了一个名为“RollingLogFileAppender”的日志记录器,它将日志记录到一个名为“myapp.log”的文件中,并且在日志文件大小达到10MB时将进行回滚。 步骤3:在应用程序中配置Log4Net 在应用程序的入口点(例如App.xaml.cs文件中的Application_Startup方法)中,添加以下代码以初始化Log4Net: ``` // Load the log4net configuration log4net.Config.XmlConfigurator.Configure(); // Get a logger instance ILog logger = LogManager.GetLogger(typeof(App)); ``` 这将加载之前创建的Log4Net配置文件,并为应用程序创建一个名为“App”的日志记录器。 步骤4:记录日志 现在,可以在应用程序中使用Log4Net记录日志了。以下是一个示例: ``` logger.Info("Application started"); try { // Some code that might throw an exception } catch (Exception ex) { logger.Error("An error occurred", ex); } ``` 在此示例中,使用日志记录器的Info方法记录了一个消息,指示应用程序已启动。然后,在try-catch块中,使用日志记录器的Error方法记录了一个异常,该异常将作为第二个参数传递给方法。 这就是使用Log4Net记录日志的基本步骤。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值