文件管理 · 2022年8月25日

log4net配合全局文件|C#类库使用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>

❷ C#中Log4Net怎么用啊

1.首先要引用log4net。2.添加log4net.config。3.在log4net.config中添加配置项。4.在程序中使用 ILog log = LogManager.GetLogger(typeof(Program)); log.Debug("日志信息");

❸ 如何使用log4net

下载Log4net源码和选择Log4net.config的Log记录配置文件(有的因为在web.config中统一记录)下载源码后,使用VS工具打开,编译一下项目即可获得log4net.dll文件如果找不到路径,可以点击vs项目的属性,查看输入路径在哪里,一般为解压根目录下的build目录,当然你可以自己修改在C#项目中添加Log4net.dll引用,找到项目选择引用,选择好Log4net.dll文件,添加完成后,编译下,在项目的bin文件夹下即可看到Log4net.dll文件在项目的程序集信息描述文件中,设置Log4net的可记录属性[assembly: log4net.Config.XmlConfigurator(Watch = true)]在根目录下添加Log4net的配置文件。可以是App.config、web.config、Log4net.config均可程序中引用Log4net,记录Log查看Log文件

❹ 如何在 Windows 服务中正确使用 log4net

不论log4net 的配置写在 app.config 里,还是独立的 config 文件里,都是一样。今天终于发现原来是在服务里不能正确定位到这个配置文件所致。于是经过尝试之后,发现关键在于如下代码中获取当前 exe 所在目录并用于得到 config 文件的路径。按这个写法就可以正确输出日志了:

❺ log4net配置文件怎么记录ip跟错误页地址

第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。第二步:程序启动时读取log4net的配置文件。如果是CS程序,在根目录的Program.cs中的Main方法中添加:log4net.Config.XmlConfigurator.Configure();如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:log4net.Config.XmlConfigurator.Configure();

❻ 如何使用 log4net 日志框架

在项目中配置第一步:首先在项目中引用log4net.dll文件。第二步:在Web.config文件中进行添加configSections的节点

❼ 如何使用Log4net创建日志及简单扩展

第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。第二步:程序启动时读取log4net的配置文件。如果是CS程序,在根目录的Program.cs中的Main方法中添加:log4net.Config.XmlConfigurator.Configure();如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:log4net.Config.XmlConfigurator.Configure();无论BS还是CS程序都可直接在项目的AssemblyInfo.cs文件里添加以下的语句:[assembly:log4net.Config .XmlConfigurator()]也可以使用自定义的配置文件,具体请参见4.4 关联配置文件。第三步:修改配置文件。如果是CS程序,则在默认的App.config文件(没有新建一个)中添加内容;如果是BS程序,则添加到Web.config文件中,添加内容一样,这里不再列出。App.config文件添加内容如下:<?xmlversion="1.0"encoding="utf-8" ?><configuration> <configSections><sectionname="log4net"type="log4net.Config.,log4net" /> </configSections> <log4net> <root> <levelvalue="WARN" /> <appender-refref="LogFileAppender" /> <appender-refref="ConsoleAppender" /> </root> <loggername="testApp.Logging"> <levelvalue="DEBUG"/> </logger> <appendername="LogFileAppender"type="log4net.Appender.FileAppender" > <paramname="File"value="log-file.txt" /> <paramname="AppendToFile"value="true" /> <layouttype="log4net.Layout.PatternLayout"> <paramname="Header"value="[Header]"/> <paramname="Footer"value="[Footer]"/> <paramname="ConversionPattern"value="%d [%t] %-5p %c [%x] – %m%n" /> </layout> <filtertype="log4net.Filter.LevelRangeFilter"> <paramname="LevelMin"value="DEBUG" /> <paramname="LevelMax"value="WARN" /> </filter> </appender> <appendername="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layouttype="log4net.Layout.PatternLayout"> <paramname="ConversionPattern" value="%d [%t] %-5p %c [%x] – %m%n" /> </layout> </appender> </log4net></configuration>第四步:在程序使用。log4net.ILoglog = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器log.Info(DateTime.Now.ToString()+ ": login success");//写入一条新log这样就将信息同时输出到控制台和写入到文件名为“log-file.txt”的文件中,其中“log-file.txt”文件的路径是当前程序运行所在目录;也可以定义为绝对路径,配置如:<paramname="File"value="C:\log-file.txt" />就写入C盘根目录下log-file.txt文件中

❽ log4net 怎么用啊还有相关问题~求助

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="Log/log.txt"/> <param name="rollingStyle" value="Size"/> <param name="MaxSizeRollBackups" value="10"/> <!– 切割最多文件数 –> <param name="MaximumFileSize" value="100MB"/> <!– 每个文件的大小 –> <param name="datePattern" value="yyyy-MM-dd HH:mm"/> <param name="AppendToFile" value="true"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%date [%thread] %-5level %logger – %message%newline"/> </layout> </appender>

❾ 如何使用log4net记录日志

实现步骤:一,下载log4net.dll (推荐从官网下载 http://logging.apache.org/log4net/download_log4net.cgi)二,在项目中引用 log4net.dll三,添加一个配置文件:我这里命名为 log4net.config(也可以在web.config里面配置为便于管理故新建了一个配置文件)<?xml version="1.0"?><configuration> <configSections> <section name= "log4net" type= "log4net.Config., log4net " /> </configSections> <log4net> <logger name="iNotes"> <level value="INFO"/> <appender-ref ref="ADONetAppender" /> </logger> <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender"> <bufferSize value="1" /><!–这里是表示是记录1 条到缓冲区,满1条后再写入SQL server 可根据需要自定义配置–> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="server=.;database=106_16_Driving;uid=sa;pwd=cx2012;" /> <commandText value="INSERT INTO OperateLog ([OperateType],[Describe],[Userid],[OperateTime]) VALUES (@OperateType, @Describe, @Userid, @OperateTime)" /> <parameter> <parameterName value="@OperateType" /> <dbType value="String" /> <size value="1" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{OperateType}" /> </layout> </parameter> <parameter> <parameterName value="@Describe" /> <dbType value="String" /> <size value="500" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{Describe}" /> </layout> </parameter> <parameter> <parameterName value="@Userid" /> <dbType value="String" /> <size value="20" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{Userid}" /> </layout> </parameter> <parameter> <parameterName value="@OperateTime" /> <dbType value="String" /> <size value="20" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%X{OperateTime}" /> </layout> </parameter> </appender> </log4net></configuration>四,在项目的 AssemblyInfo.cs 文件的指定log4net 的配置文件路径[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]五,自定义记录函数View Code六,在 后台代码中的调用Operate_Log("1", "学员:" + txtName.Text);

❿ C#类库使用log4net时,程序调用log4net配置文件路径问题

在类库的 assemblyInfo.cs中改为:[assembly: log4net.Config.XmlConfigurator(Watch=true)]意思是:让log4net从应用程序的.config文件获取配置假设有一个版TestApp应用程序引用了上面类库,权那么,按上面的修改,log4net将从TestApp.config文件获取配置。这样,你可以将原来类库app.config的内容移动到TestApp项目的app.confg中(TestApp项目编译后自动生成TestApp.config)。希望对你有所帮助!