log4net快速上手
时间:2022-04-23
本文章向大家介绍log4net快速上手,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
社区里有一篇 Log4Net使用指南 写得很详细,推荐给准备使用log4net的同学看看。
如果你不想花太多时间研究,也可以按下面的步骤在5分钟内搞定:
1、添加对log4net.dll的引用
2、修改配置文件,以app.config为例,参考内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<logger name="jimmy.logger">
<!--ALL->DEBUG->INFO->WARN->ERROR->FATAL->OFF 级别依次增加,
即:如果设置为INFO,则DEBUG类型的日志将不被记录;
如果设置为ERROR,则仅ERROR/FATAL二种级别的日志将被记录-->
<level value="WARN"/>
<appender-ref ref="RollingLogFileAppender"/>
</logger>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--日志文件最大10M-->
<param name="MaxSizeRollBackups" value="10" />
<param name="StaticLogFileName" value="false" />
<!--日志文件名前缀-->
<param name="File" value="log\" />
<!--日志文件名按日期生成-->
<param name="RollingStyle" value="Date" />
<!--日志文件名的生成格式:yyyyMMdd.txt-->
<param name="DatePattern" value="yyyyMMdd".txt"" />
<!--日志记录的格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>
3、示例代码
using System;
using log4net;
namespace console_demo
{
class Program
{
static void Main(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
ILog log = LogManager.GetLogger("jimmy.logger"); //这里的名字,要跟config中 logger name中对应
Console.WriteLine("log4net started...");
Console.WriteLine("IsInfoEnabled={0}nIsDebugEnabled={1}nIsWarnEnabled={2}nIsErrorEnabled={3}nIsFatalEnabled={4}", log.IsInfoEnabled, log.IsDebugEnabled, log.IsWarnEnabled, log.IsErrorEnabled,log.IsFatalEnabled);
if (log.IsInfoEnabled)
{
log.Info("info test");
}
if (log.IsDebugEnabled)
{
log.Debug("Debug test");
}
if (log.IsWarnEnabled)
{
log.Warn("Warn test");
}
if (log.IsErrorEnabled)
{
log.Error("Error test");
}
if (log.IsFatalEnabled)
{
log.Fatal("Fatal test");
}
Console.ReadKey();
}
}
}
运行后,将在程序同级目录下,自动创建log目录,并生成类似20110417.txt的日志文件,内容类似下面这样:
2011-04-17 20:41:25,347 [6948] WARN jimmy.logger [(null)] - Warn test 2011-04-17 20:41:25,463 [6948] ERROR jimmy.logger [(null)] - Error test 2011-04-17 20:41:25,465 [6948] FATAL jimmy.logger [(null)] - Fatal test
注:因为config的log4net节点配置了日志级别为WARN,所以低于WARN级别的DEBUG,INFO信息并没有记录在日志中。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Sentinle集群流控【源码笔记】
- ggplot坐标轴方向设置
- Scaling与Normalization的区别
- Android 音乐APP(一)扫描本地音乐
- Semaphore:如何快速实现一个限流器?
- 延迟初始化Spring Bean:延迟初始化的Bean会影响依赖注入吗?
- Android 音乐APP(二)启动白屏优化、定位当前播放歌曲
- CompletableFuture:异步编程没那么难
- 你知道Oracle数据库除了SGA和PGA,还有MGA么?
- .NET Standard 类库的使用技巧
- Makefile实例:批量编译多个目标
- GitHub如何回滚代码1.git log 查看commit hash值2.执行git reset --hard xxxx3.git push -f
- java获取程序执行时间
- Redis数据增多了,是该加内存还是加实例?
- 针对mysql delete删除表数据后占用空间不变小的问题