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

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

博客园 - 9527的晃悠人生

(转)使用Visual Studio.net调试javascript最方便的方法 jsoho.com介绍 测试 学习计划 简单权限验证的方法 查找某些记录中重复的记录 竞猜系统设计文档 足球联赛竞猜管理 遍厉目录下文件和子目录 自定义下载文件名 用C#实现将html文件转换为chm文件 调试断点的条件设置 Asp.net 中 页面无刷新的做法 内容服务中的大文本处理。 关于Asp的性能优化 Insert 一个字段类型是自动增量的,又要写入变量 第三方的数据控件、分页控件 关于网络文学站的相关事宜 利用PD进行数据库建模
用log4net快速构建asp.net 异常日志
9527的晃悠人生 · 2005-04-30 · via 博客园 - 9527的晃悠人生

log4net是一个非常完善的日志组件. 有着强大的可配置性. 有助于提高开发效率 。log4net是apache组织开发的日志组件, 同其姐妹log4j一样,
是一个开源项目. 可以以插件的形式应用在你的系统中. 下面仅说明如何应用在web forms项目中. 做为主要的日志输出组件.

第一步:应该下载log4net.dll并引入到你的项目中,下载见附件

第二步:修改你的global.asa.cs. 配置application对象启动的时候加载log4net配置
protected void Application_Start(Object sender, EventArgs e)
{
log4net.Config.DOMConfigurator.Configure();
}

第三步:在web.cofig根节点 configuration 中加入如下section
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

第四步:在web.cofig增加配置节点
<log4net>
<appender name="RollingLogFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File" value="E:\\Log\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p
&lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
此节点将在参数 <param name="File" 所指定的目录下生成以日期为文件名的日志文件,请自行根据实际情况修改。
如: 2005年2月3日,则在目录下生成 20050203.htm 的日志文件。

第五步:在程序中写入日志
以下例子是在Global.asax的 Application_Error 方法里捕捉所有异常写入当天日志。在其他页面的代码里页可以这么写入。

先实例化:private static readonly log4net.ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
然后在Application_Error方法中写自定义消息:
protected void Application_Error(Object sender, EventArgs e)
{
log.Info("\r\n客户机IP:"+ Request.UserHostAddress +"\r\n<BR>错误地址:"+ Request.Url,
Server.GetLastError());
}

经过以上5个步骤就能够在很短的时间内完成站点的异常日志工作,经常查看日志可以发现我们程序中的不足而且可以发现一些恶意访问的记录,然后做出相应的措施。

补充一下,如果需要用log4net同时记录操作日志和异常日志,并且希望把他们存储在不同的地方(文件或者数据库),可以这样处理,这里以文件为例。

首先更改配置文件
增加logger配置节,
<logger name="logerror">

<level value="ERROR" />

<appender-ref ref="RollingLogFileAppender" />

</logger>

<logger name="loginfo">

<level value="INFO" />

<appender-ref ref="InfoAppender" />

</logger>根据需要可以定义多个,
设置各个log对应的级别,并补充每个appender所对应的节点
<appender name="RollingLogFileAppender"

type="log4net.Appender.RollingFileAppender">

<param name="File" value="F:\\AppLog\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t]
&lt;BR&gt;%n异常级别:%-5p

&lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />

</layout>

</appender>

<appender name="InfoAppender"

type="log4net.Appender.RollingFileAppender">

<param name="File" value="F:\\App\\" />

<param name="AppendToFile" value="true" />

<param name="MaxSizeRollBackups" value="100" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />

<param name="RollingStyle" value="Date" />

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n日志时间:%d [%t]
&lt;BR&gt;%n日志级别:%-5p

&lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />

</layout>

</appender>

在cs文件里定义多个log实例,
public static readonly log4net.ILog loginfo =
log4net.LogManager.GetLogger("loginfo");

public static readonly log4net.ILog logerror =
log4net.LogManager.GetLogger("logerror");

作为操作日志和异常日志的操作对象,
根据级别,进行操作
if(loginfo.IsInfoEnabled)
loginfo.Info("新增文章成功!");

if(logerror.IsErrorEnabled)
logerror.Error("新增文章出错!",se);

参考文档

http://www.ondotnet.com/pub/a/dotne...net.html?page=1

配置的样例
http://logging.apache.org/log4net/r...g-examples.html

生成文件的格式有三种
1。按日期
2。按文件大小
3。同时按日期和文件大小

关键节点
<param name="MaxFileSize" value="10240" />

<param name="StaticLogFileName" value="false" />

<param name="DatePattern" value="yyyyMMddHH&quot;.htm&quot;" />

<param name="RollingStyle" value="Composite" />

文件大小的单位是字节,