网站首页 > 技术教程 正文
摘要
log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。
正文
最常用的日志记录需求
- 日志文件保存到项目启动目录下的logs文件夹
- 以天为单位进行日志文件的保存
通过NuGet直接搜索log4net进行安装
项目下右键新建log4net.config文件
设置总是copy
log4net.config文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!--配置节点-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name="File" value="Log\\Info\\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="30" />
<!--log文件大小-->
<param name="maximumFileSize" value="100MB"/>
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2008-08-31.log-->
<param name="DatePattern" value="yyyyMMdd'.html'" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Composite" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=rreen>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name="File" value="Log\\Debug\\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="30" />
<!--log文件大小-->
<param name="maximumFileSize" value="100MB"/>
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:20230101.log-->
<param name="DatePattern" value="yyyyMMdd'.html'" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Composite" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--日志路径-->
<param name="File" value="Log\\Error\\" />
<!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" />
<!--log保留天数-->
<param name="MaxSizeRollBackups" value="30" />
<!--log文件大小-->
<param name="maximumFileSize" value="100MB"/>
<!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2008-08-31.log-->
<param name="DatePattern" value="yyyyMMdd'.html'" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Composite" />
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="FATAL"/>
</filter>
</appender>
<root>
<!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
<!--系统上线初期或发生异常可将此Level设定为DEBUG或ALL-->
<level value="ALL" />
<appender-ref ref="InfoAppender" />
<appender-ref ref="DebugAppender" />
<appender-ref ref="ErrorAppender" />
</root>
</log4net>
</configuration>
输出的日志消息
%n(newline) //换行
%d(datetime) //输出当前语句运行的时刻
%r(runtime) //输出程序执行到当前消耗的毫秒数
%t(threadid) //当前语句所在的线程ID
%p(priority) //日志的当前日志级别
%c(class) //当前日志对象的名称
%L //输出语句所在的行号
%F //输出语句所在的文件名
%-10 //最小长度为10,不够空格填充
LogHelper类
/// <summary>
/// Log4Net日志记录类
/// </summary>
public class LogHelper
{
private static readonly ILog Log;
static LogHelper()
{
XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "Log4net.config"));
Log = LogManager.GetLogger(typeof(LogHelper));
}
/// <summary>
/// 记录调试信息
/// </summary>
/// <param name="message">信息</param>
public static void Debug(object message)
{
Log.Debug(message);
}
/// <summary>
/// 记录警告信息
/// </summary>
/// <param name="message">信息</param>
public static void Warn(object message)
{
Log.Warn(message);
}
/// <summary>
/// 记录错误信息
/// </summary>
/// <param name="message">信息</param>
public static void Error(object message)
{
Log.Error(message);
}
/// <summary>
/// 记录重要提示信息
/// </summary>
/// <param name="message">信息</param>
public static void Info(object message)
{
Log.Info(message);
}
/// <summary>
/// 记录信息和异常信息
/// </summary>
/// <param name="message">错误信息</param>
/// <param name="ex">异常对象</param>
public static void Debug(object message, Exception ex)
{
Log.Debug(message, ex);
}
/// <summary>
/// 记录信息和异常信息
/// </summary>
/// <param name="message">错误信息</param>
/// <param name="ex">异常对象</param>
public static void Warn(object message, Exception ex)
{
Log.Warn(message, ex);
}
/// <summary>
/// 记录信息和异常信息
/// </summary>
/// <param name="message">错误信息</param>
/// <param name="ex">异常对象</param>
public static void Error(object message, Exception ex)
{
Log.Error(message, ex);
}
/// <summary>
/// 记录信息和异常信息
/// </summary>
/// <param name="message">错误信息</param>
/// <param name="ex">异常对象</param>
public static void Info(object message, Exception ex)
{
Log.Info(message, ex);
}
}
保存到数据表
修改配制文件
在.net6环境下需要nuget安装System.Data.SqlClient
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!--注册Appender-->
<root>
<level value="ALL" />
<appender-ref ref="AdoNetAppender" />
</root>
<!--配置Appender-->
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="-1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=idio-002;initial catalog=bzscada;persist security info=True;user id=sa;password=123;MultipleActiveResultSets=True;" />
<commandText value="INSERT INTO sys_log ([Createddate],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@createddate, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@createddate" />
<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" />
</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>
</appender>
</log4net>
</configuration>
猜你喜欢
- 2024-10-27 NET 6 NLog教程与使用 .net nlog
- 2024-10-27 .NET 远程日志组件 Jack.RemoteLog
- 2024-10-27 如何在企业中轻松地管理群聊(上) 企业群管理规章制度
- 2024-10-27 在 ASP.NET Core 中使用 Serilog 使用 Fluentd 将日志写入 Elasticsearch
- 2024-10-27 asp.net如何添加日志NLog aspnet日历控件
- 2024-10-27 Asp.Net Core中使用NLog记录日志 netcore日志框架对比
- 2024-10-27 EvnetLog Analyzer作为一款日志管理软件能给企业带来哪些帮助?
- 2024-10-27 .Net Core下NLog日志框架使用入门
- 2024-10-27 C# .NET 6 校园图书管理系统:第六章 .Net6之NLog日志的配置与使用
- 2024-10-27 ASP.NET Core:ASP.NET Core中使用NLog记录日志
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)