惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Stack Overflow Blog
Stack Overflow Blog
量子位
Cyberwarzone
Cyberwarzone
Hugging Face - Blog
Hugging Face - Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Know Your Adversary
Know Your Adversary
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
D
Docker
大猫的无限游戏
大猫的无限游戏
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
Hacker News: Ask HN
Hacker News: Ask HN
SecWiki News
SecWiki News
F
Full Disclosure
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Heimdal Security Blog
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
Cloudbric
Cloudbric
W
WeLiveSecurity
S
Schneier on Security
Project Zero
Project Zero
T
Threat Research - Cisco Blogs
罗磊的独立博客
Schneier on Security
Schneier on Security
G
Google Developers Blog
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
小众软件
小众软件
有赞技术团队
有赞技术团队
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
S
Security Affairs
Application and Cybersecurity Blog
Application and Cybersecurity Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页

博客园 - Robert.H.fu

国内最大的免费空间站,国内最便宜最稳定的空间 编程连接远程SQL服务器出现问题及对策 SQL Server 中的时间算法 sql server 2008 CDC sql server & excel 保持一颗好学之心 在ubuntu 下安装Oracle 11g 在oracle中使用自增字段 今年国庆过得特别快 J2EE中的13种技术规范 AMO 对象模型 Oracle常用数据字典表 怎样提高自己-驱动你的同事 七个爱情故事 人生拥有的,是不断的抉择 中国书信礼仪 (三) 中国书信礼仪 (二) 中国书信礼仪 (一) 学会提问
log4net 配置
Robert.H.fu · 2009-04-29 · via 博客园 - Robert.H.fu

log4net, 是 apache.org 在 log4j的基础上推出的针对.NET程序的开源的日志组件。

log4net目前的最新版本是 1.2.10,log4net支持的日志保存方式,可谓丰富之极,包括:

  • 存入SQL SERVER 数据库
  • 存入ACCESS数据库
  • 存入ORACLE数据库
  • 存入DB2数据库
  • 存入SQLLite数据库
  • 生成asp.net 的trace模式的日志
  • 缓存方式的日志
  • 直接输出到控制台屏幕(支持彩色)
  • 存入系统日志
  • 生成单文件日志
  • 生成多文件日志
  • 保存在内存中
  • 利用net send 发送给指定的网络域或主机
  • 远程生成日志
  • 利用SMTP发送日志到指定的邮箱
  • 利用IIS的SMTP,将日志放入MAIL目录
  • 利用UDP协议发送日志

上面的,各种日志保存方式的具体配置细节, 在这里

log4net的日志记录分为7级,从高到低为: OFF、FATAL、ERROR, WARN, INFO, DEBUG, ALL

要使用log4net,必须给log4net指定好配置文件, 有两种方法:

  1. 放入 web.config 或 app.config
  2. 放入一个单独的配置文件,如: log4net.config (推荐)

log4net的配置格式,大致如下:



<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="false">
    
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        
<file value="log.txt" />
        
<appendToFile value="true" />
        
<rollingStyle value="Composite" />
        
<datePattern value=".yyyyMMdd" />
        
<maxSizeRollBackups value="10" />
        
<maximumFileSize value="1MB" />
        
<staticLogFileName value="true" />
        
<layout type="log4net.Layout.PatternLayout">
            
<conversionPattern value="%date %-5level %logger -%m%n" />
        
</layout>
    
</appender>
    
<root>
        
<level value="WARN" />
        
<appender-ref ref="RollingLogFileAppender" />
    
</root>
</log4net>

上面给出的是一个独立的log4net的配置文件,大体解释一下:

<log4net></log4net>是根,<root></root>是必须的,是所有日志格式的根,其中定义了,日志记录的基础级别,和当前启用的日志记录方式, 上面的 appender 将继承root的level

appender中的 type 指明了,采用哪种方式来记录日志,具体取值,大家去 这里 查看

layout是日志输出格式的定义

%d, %date :表示当然的时间

%level : 表示日志的级别

%logger, %c:表示日志产生的主题,通常是所在的类名,便于定位问题

%t, %thread: 表示 所在进程

%L:   表示产生日志的代码所在的行数

%m, %message :表示日志的具体内容

%n, %newline: 换行

————————————————————————–

我上面的是一个多文件日志的配置, 每天产生一个日志文件,日志名字是 log.txt.20081228 的形式

下面重点说一下使用的具体步骤:

1.  加入 log4net.dll 的引用

2. 对于 web applicationwinform

AssemblyInfo.cs 中,加入



[assembly: log4net.Config.XmlConfigurator(ConfigFile="log4net.config", Watch=true)]
//log4net.config 是配置文件的名称,可以自行设置
//Watch 是表示在程序运行期间是否监视该配置文件的变动

3. 对于WinForm记得将"log4net.config"复制到输出目录, 而website 项目,则需要在 global.asax.cs 里,加入


protected void Application_Start(Object sender, EventArgs e)
{
    
//配置log4net
    log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));
}

4. 实际调用


class Program
    {
        
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        
//System.Reflection.MethodBase.GetCurrentMethod().DeclaringType 
        
//是利用反射获取当前类的type,记录在日志中,便于定位日志发生的所在

        
static void Main(string[] args)
        {
            log.Error(
"这是一个错误日志");
            log.Fatal(
"这是一个致命的错误日志");
            log.Warn(
"这是一条警告日志");
            log.Info(
"这是一条普通信息");
            Console.Read();
        }
    }