log4net输出文件格式|如何利用log4Net自定义属性配置功能记录完整的日志信息

① 如何利用log4Net自定义属性配置功能记录完整的日志信息

如何利用log4Net自定义属性配置功能记录完整的日志信息log4Net作为专业的log记录控件,对于它的强大功能大家一定不陌生。下面我将详细介绍如何利用其自定义属性,让日志信息更完整。一,创建测试工程,log4Net组件可以自己从网上下载,也可通过Nuget进行安装。二,创建日志模型及数据库表,因为我们的日志信息可以输出为文本,也可以输出到数据库。三,添加MyLayout,MyPatternConverter类扩展PatternLayout。四,添加Log4Net.config文件,进行输入方式定义。<?xml version="1.0" encoding="utf-8" ?><configuration><configSections><section name="log4net" type="log4net.Config.,log4net"/></configSections><log4net><!– ConversionPattern 解释%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息%n(new line):换行%d(datetime):输出当前语句运行的时刻%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数%t(thread id):当前语句所在的线程ID%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等%c(class):当前日志对象的名称%L:输出语句所在的行号%F:输出语句所在的文件名%-数字:表示该项的最小长度,如果不够,则用空格填充–><!–定义输出到控制台命令行中–><logger name="myLogger"><level value="ALL"/><appender-ref ref="ConsoleAppender" /></logger><!–定义输出到控制台命令行中–><appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"><layout type="Log4NetTest.MyLayout"><param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p %n用 户 ID:%Property{UserID} %n用户姓名:%Property{UserName} %n日志信息:%Property{Message} %n异常信息:%exception %n%n" /></layout></appender><!–定义输出到windows事件中–><appender name="WindowsAppender" type="log4net.Appender.EventLogAppender"><layout type="Log4NetTest.MyLayout"><param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p %n用 户 ID:%Property{UserID} %n用户姓名:%Property{UserName} %n日志信息:%Property{Message} %n异常信息:%exception %n%n" /></layout></appender><!–定义输出到文件中–><appender name="TextAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="Log\\" /><param name="AppendToFile" value="true" /><param name="MaxFileSize" value="10240" /><param name="MaxSizeRollBackups" value="100" /><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyyMMdd" /><param name="RollingStyle" value="Date" /><layout type="Log4NetTest.MyLayout"><param name="ConversionPattern" value="日志时间:%d %n日志级别:%-5p %n用 户 ID:%Property{UserID} %n用户姓名:%Property{UserName} %n日志信息:%Property{Message} %n异常信息:%exception %n%n" /></layout></appender><!–定义输出到数据库–><appender name="DataBaseAppender" type="log4net.Appender.AdoNetAppender"><!–日志缓存写入条数–><bufferSize value="1" /><!–日志数据库连接串–><connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /><connectionString value="data source=.\SQL2008;initial catalog=Demo;integrated security=false;persist security info=True;User ID=sa;Password=1qaz" /><!–日志数据库脚本–><commandText value="INSERT INTO LogInfo ([LogDate],[LogLevel],[UserId],[UserName],[Message],[Exception]) VALUES (@LogDate, @LogLevel,@UserId,@UserName, @Message, @Exception)" /><!–日志时间LogDate –><parameter><parameterName value="@LogDate" /><dbType value="String" /><size value="30" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" /></layout></parameter><!–日志类型LogLevel –><parameter><parameterName value="@LogLevel" /><dbType value="String" /><size value="10" /><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%level" /></layout></parameter><!–自定义UserId –><parameter><parameterName value="@UserId" /><dbType value="String" /><size value="20" /><layout type="Log4NetTest.MyLayout"><conversionPattern value="%Property{UserID}" /></layout></parameter><!–自定义UserName –><parameter><parameterName value="@UserName" /><dbType value="String" /><size value="50" /><layout type="Log4NetTest.MyLayout"><conversionPattern value="%Property{UserName}" /></layout></parameter><!–自定义Message –><parameter><parameterName value="@Message" /><dbType value="String" /><size value="200" /><layout type="Log4NetTest.MyLayout"><conversionPattern value="%Property{Message}" /></layout></parameter><!–异常信息Exception –><parameter><parameterName value="@Exception" /><dbType value="String" /><size value="4000" /><layout type="log4net.Layout.ExceptionLayout" /></parameter></appender></log4net></configuration>五,添加LogHelper.cs类进行各自信息的写入操作。using System;using System.Diagnostics;using System.IO;using System.Windows.Forms;using log4net;[assembly: log4net.Config.XmlConfigurator(Watch = true)]namespace Log4NetTest{public class LogHelper{/// <summary>/// LoggerName/// </summary>public static string LoggerName = string.Empty;/// <summary>/// 用户ID/// </summary>public static string UserID = string.Empty;/// <summary>/// 用户名称/// </summary>public static string UserName = string.Empty;private static ILog iLog;private static LogEntity logEntity;/// <summary>/// 接口/// </summary>private static ILog log{get{string path = Application.StartupPath + @"\Log4Net.config";log4net.Config.XmlConfigurator.Configure(new FileInfo(path));if (iLog == null){iLog = log4net.LogManager.GetLogger(LoggerName);}else{if (iLog.Logger.Name != LoggerName){iLog = log4net.LogManager.GetLogger(LoggerName);}}return iLog;}}/// <summary>/// 构造消息实体/// </summary>/// <param name="message"></param>/// <returns></returns>private static LogEntity BuildMessageMode(string message){if (logEntity == null){logEntity = new LogEntity();logEntity.UserID = UserID;logEntity.UserName = UserName;logEntity.Message = message;}elselogEntity.Message = message;return logEntity;}/// <summary>/// 调试/// </summary>/// <param name="message">消息</param>public static void Debug(string message){if (log.IsDebugEnabled)log.Debug(BuildMessageMode(message));}/// <summary>/// 调试/// </summary>/// <param name="message">消息</param>/// <param name="exception">异常</param>public static void Debug(string message, Exception ex){if (log.IsDebugEnabled)log.Debug(BuildMessageMode(message), ex);}/// <summary>/// 信息/// </summary>/// <param name="message">消息</param>public static void Info(string message){if (log.IsInfoEnabled)log.Info(BuildMessageMode(message));}/// <summary>/// 信息/// </summary>/// <param name="message">消息</param>/// <param name="exception">异常</param>public static void Info(string message, Exception ex){if (log.IsInfoEnabled)log.Info(BuildMessageMode(message), ex);}/// <summary>/// 一般错误/// </summary>/// <param name="message">消息</param>public static void Error(string message){if (log.IsErrorEnabled)log.Error(BuildMessageMode(message));}/// <summary>/// 一般错误/// </summary>/// <param name="message">消息</param>/// <param name="exception">异常</param>public static void Error(string message, Exception exception){if (log.IsErrorEnabled)log.Error(BuildMessageMode(message), exception);}/// <summary>/// 警告/// </summary>/// <param name="message">消息</param>public static void Warn(string message){if (log.IsWarnEnabled)log.Warn(BuildMessageMode(message));}/// <summary>/// 警告/// </summary>/// <param name="message">消息</param>/// <param name="exception">异常</param>public static void Warn(string message, Exception ex){if (log.IsWarnEnabled)log.Warn(BuildMessageMode(message), ex);}/// <summary>/// 严重/// </summary>/// <param name="message">消息</param>public static void Fatal(string message){if (log.IsFatalEnabled)log.Fatal(BuildMessageMode(message));}/// <summary>/// 严重/// </summary>/// <param name="message">消息</param>/// <param name="exception">异常</param>public static void Fatal(string message, Exception ex){if (log.IsFatalEnabled)log.Fatal(BuildMessageMode(message), ex);}}}六,进行日志效果测试,只要通过修改Log4Net.config,就可实现各种方式的输入。输出到控制台:<logger name="myLogger"><level value="ALL"/><appender-ref ref="ConsoleAppender" /></logger>输出到文件:<logger name="myLogger"><level value="ALL"/><appender-ref ref="TextAppender" /></logger>输出到数据库:<logger name="myLogger"><level value="ALL"/><appender-ref ref="DataBaseAppender" /></logger>

② 我想用log4net记录文件夹名称,文件名称 应该怎么解决

70 <parameterName value="@logger" />71 <dbType value="String" />72 <size value="255" />73 <layout type="log4net.Layout.PatternLayout">74 <conversionPattern value="%logger" />75 </layout>76 </parameter>77 <parameter>78 <parameterName value="@message" />79 <dbType value="String" />80 <size value="1024" />81 <layout type="log4net.Layout.PatternLayout">82 <conversionPattern value="%message" />83 </layout>84 </parameter>85 </appender>86 <!–定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。–>87 <root>88 <appender-ref ref="LogFileAppender" />89 <appender-ref ref="ConsoleAppender" />90 <appender-ref ref="EventLogAppender" />91 <appender-ref ref="AdoNetAppender_Access" />92 </root>93 </log4net>94</configuration>2. LoggingExample.cs 1// Configure log4net using the .config file 2[assembly: log4net.Config.XmlConfigurator(Watch=true)] 3// This will cause log4net to look for a configuration file 4// called ConsoleApp.exe.config in the application base 5// directory (i.e. the directory containing ConsoleApp.exe) 6 7namespace ConsoleApp 8{ 9 using System;1011 /**//// <summary>12 /// Example of how to simply configure and use log4net13 /// </summary>14 public class LoggingExample15 {16 private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);17 18 public static void Main(string[] args)19 {20 log.Error("Error Acc");21 log.Fatal("Fatle Acc"); 22 System.Console.ReadLine();23 24 }2526 }27}28

③ log4net到底有啥用

这个玩意可是及其的强悍,可以让你按照自己的预想的格式输出信息,包括输出格式,而且开箱即用,可以使用多个log,定义很多的侦听程序, 不同的级别,可以针对不同的级别情况输出,也就是你可以控制输出log的数量,如设置debug级别的话,所有debug以上级别都可以输出,其余的不输出,你也可以输出到文本,xml,数据库,电子邮件,甚至任何自定义的输出端

④ log4net文件记录日志如何配置每天输出到不同的文件

<param name="DatePattern" value="yyyy-MM-dd.HH".log""/>详细介绍看这里内:容http://blog.csdn.net/mars199/article/details/6669232

⑤ winform log4net 无法写入

需要在Program里加上一下代码,初始化用的 log4net.Config.XmlConfigurator.ConfigureAndWatch( new System.IO.FileInfo("log4net.config"));

⑥ C#/.net/java日志类库log4net里输出类似[9]的是什么信息格式配置里没这项

<!– ConversionPattern 解释%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息%n(new line):换行%d(datetime):输出当前语句运行的时刻%r(run time):输出程序从运版行到执行到当权前语句时消耗的毫秒数%t(thread id):当前语句所在的线程ID%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等%c(class):当前日志对象的名称%L:输出语句所在的行号%F:输出语句所在的文件名%-数字:表示该项的最小长度,如果不够,则用空格填充–><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c – %m%n %logger%newline" /></layout>上面这样写更容易明白,[]里面是线程ID

⑦ Log4net输出成XML文件的时候没有<xml version="1.0" encoding="utf-8" > 的起始节点

默认就是文本格式的.你要需要让生成的日志是xml的而且是指定编码格式?这样的话可能得客制化log4net

⑧ log4net按照不同类型输出到文件或数据库么

这个应该配置两个logger就可以了 不是两个appender,然后你的两个方法分别使用不同的log,这样是不是就满足你的要求了

⑨ C#Log4Net无法输出日志,连文件夹都没有

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">log4net.Appender.FileAppender只能输出日志到某个具体的文件中如果是要输出日志到某个文件夹,然后根据日期生成日志文件的话把type改为log4net.Appender.RollingFileAppender如下:<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">

⑩ 如何使用 log4net 以日期为文件名输出

只要是大于10M就生成一个新的日志文件 这个就是指导旧的日志文件重命名了,当前正在写入的日志文件,还是配置里指定的那个文件名,明白吗? 你只要打开配置里指定的那个文件,就是最新的


赞 (0)