log4net的详细使用教程
1、下载log4net并添加引用或通过NuGet安装程序包
2、配置文件中添加配置
在配置文件web.config或App.config中的Configuration节点下增加以下配置
-
-
<configSections>
-
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
-
</configSections>
-
<log4net>
-
<appender name="Console" type="log4net.Appender.ConsoleAppender">
-
<layout type="log4net.Layout.PatternLayout">
-
<!-- Pattern to output the caller's file name and line number -->
-
<conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/>
-
</layout>
-
</appender>
-
<!--定义输出到文件中-->
-
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
-
<!--定义文件存放位置-->
-
<file value="App_Log\\log"/>
-
<!--是否追加到文件-->
-
<appendToFile value="true"/>
-
<!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
-
<lockingModel type="log4net.Appender.FileAppender MinimalLock"/>
-
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
-
<maxSizeRollBackups value="-1"/>
-
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
-
<rollingStyle value="Composite"/>
-
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
-
<!--是否只写到一个文件中-->
-
<staticLogFileName value="false"/>
-
<!--每个文件的大小。只在混合方式与文件大小方式下使用。
-
超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。
-
可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
-
<maximumFileSize value="100MB"/>
-
<!--计数类型为1,2,3…-->
-
<param name="CountDirection" value="1"/>
-
<layout type="log4net.Layout.PatternLayout">
-
<!--输出格式-样例:
-
记录时间:2022-08-24 17:59:31,172 线程ID:[4] 日志级别:INFO
-
出错类:Log4NetDemo.MainClass 属性:[UserName:John]
-
日志描述:创建连接失败。-->
-
<conversionPattern value="记录时间:te 线程ID:[%thread] 日志级别:%-5level %n出错类:%logger 属性:[UserName:%property{UserName}] %n日志描述:%message%newline %n"/>
-
</layout>
-
</appender>
-
<root>
-
<!--日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL-->
-
<level value="ALL"/>
-
<!--<appender-ref ref="Console"/>-->
-
<appender-ref ref="RollingFile"/>
-
</root>
-
</log4net>
3、编写日志写入帮助类
注意,在命名空间上方要加代码:[assembly: log4net.Config.XmlConfigurator(Watch = true)],才能正确读取配置文件中的内容。
-
using System;
-
using System.Collections.Generic;
-
using System.Linq;
-
using System.Text;
-
-
[]
-
namespace Demo.Helper
-
{
-
/// <summary>
-
/// 日志帮助类
-
/// </summary>
-
public class LogHelper
-
{
-
-
-
/// <summary>
-
/// 输出日志到Log4Net
-
/// </summary>
-
/// <param name="t"></param>
-
/// <param name="ex">异常对象</param>
-
/// <param name="level">日志等级,默认为:1 Debug 级</param>
-
public static void WriteLog(Type t, Exception ex, LogLevel level = LogLevel.DEBUG)
-
{
-
WriteLog(t, ex.Message, level);
-
}
-
-
-
-
-
-
/// <summary>
-
/// 输出日志到Log4Net
-
/// </summary>
-
/// <param name="t"></param>
-
/// <param name="msg">错误信息</param>
-
/// <param name="level">日志等级,默认为:1 Debug 级</param>
-
public static void WriteLog(Type t, string msg, LogLevel level = LogLevel.DEBUG)
-
{
-
// 对应日志信息中的“%property{UserName}”
-
//log4net.ThreadContext.Properties["UserName"] = "Test";
-
-
log4net.ILog log = log4net.LogManager.GetLogger(t);
-
switch (level)
-
{
-
// 日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
-
case LogLevel.DEBUG:
-
log.Debug(msg);
-
break;
-
case LogLevel.INFO:
-
log.Info(msg);
-
break;
-
case LogLevel.WARN:
-
log.Warn(msg);
-
break;
-
case LogLevel.ERROR:
-
log.Error(msg);
-
break;
-
case LogLevel.FATAL:
-
log.Fatal(msg);
-
break;
-
default:
-
log.Debug(msg);
-
break;
-
}
-
}
-
-
-
-
}
-
-
/// <summary>
-
/// 日志等级:
-
/// OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL
-
/// </summary>
-
public enum LogLevel
-
{
-
/// <summary>
-
/// ALL
-
/// </summary>
-
ALL = 0,
-
-
/// <summary>
-
/// DEBUG
-
/// </summary>
-
DEBUG = 1,
-
-
/// <summary>
-
/// INFO
-
/// </summary>
-
INFO = 2,
-
-
/// <summary>
-
/// WARN
-
/// </summary>
-
WARN = 3,
-
-
/// <summary>
-
/// ERROR
-
/// </summary>
-
ERROR = 4,
-
-
/// <summary>
-
/// FATAL
-
/// </summary>
-
FATAL = 5,
-
-
/// <summary>
-
/// OFF
-
/// </summary>
-
OFF = 6
-
}
-
}
4、通过日志帮助类调用方法写入日志信息
-
using System;
-
-
namespace Demo
-
{
-
static class Program
-
{
-
/// <summary>
-
/// 应用程序的主入口点。
-
/// </summary>
-
static void Main()
-
{
-
LogHelper.WriteLog(typeof(Demo), "输出日志信息。", LogLevel.INFO);
-
}
-
}
-
}
5、日志样式
-
记录时间:2022-08-24 17:58:48,881 线程ID:[4] 日志级别:INFO
-
出错类:Demo 属性:[UserName:John]
-
日志描述:监听启动中...
-
-
记录时间:2022-08-24 17:58:48,912 线程ID:[4] 日志级别:DEBUG
-
出错类:Demo 属性:[UserName:John]
-
日志描述:创建连接。
-
-
记录时间:2022-08-24 17:59:10,167 线程ID:[4] 日志级别:ERROR
-
出错类:Demo 属性:[UserName:John]
-
日志描述:连接失败。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgihaah
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13