- 浏览: 173105 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
zhong504989:
你好。。请问你解决了么?我刚开始搞wap开发,用xhtml来, ...
ASP.NET Mobile Web Form 怎么设置背景图呢? -
xiaoqiang2008:
后台接收代码最好是用java写的
Windows Mobile 上传文件到服务器 -
xiaoqiang2008:
有后台接收的代码吗?能否贴上来看看,谢谢!
Windows Mobile 上传文件到服务器 -
guowee:
大家可以试着用一下ATL的HTML控件,不错的。
Windows mobile HTMLCtrl can not support WML ? -
guowee:
注意: 监控的文件夹名称最后不能有 \
windows mobile 监控 文件夹
一、在asp.net中使用log4net
1、添加log4net.dll引用
2、编辑配置文件,有两种做法:放在web.config里或放在单独的文件里,我们一般放在单独的文件里,这样做的好处--修改log4net的配置不会影响到整个应用重启
3、在Global.asax的Application_Start里加入如下代码
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("~")+@"\log4net.xml"));
log4net.xml为log4net的配置文件,"\log4net.xml"为配置文件相对于站点的路径
4、创建日志对象,一般定义为一个类的私有静态字段
private static readonly ILog log = LogManager.GetLogger(typeof(类名).Name);
5、写日志
if (log.IsDebugEnabled)
{
log.Debug("日志信息");
}
二、在分层构架中使用log4net
一般asp.net项目都会使用分层构架,如何在web以外的其它层使用log4net呢,比如DAL层,还要写相应的配置文件吗?
答案是否定的,在其它层中只要完成上面的1、4、5就行了,不需要再单独进行配置,它会自动沿用web层里的配置信息
三、如何防止自定义的logger和root重复写入日志
logger是从root继承而来,默认的用logger写的日志会被root重复写一份,如何防止这种情况呢,网上有人提出可以去掉root里的 appender-ref,这不是一个好的解决方法,logger只是为了单独处理一些日志,大部分的日志还是要依靠root来完成。
其实log4net提供了一种很好的解决方式,断开logger与root的继承关系,只要在配置文件里的logger加上属性additivity="false" 就可以了。
在log4net的配置中,appender是最重要的部分,一般来说,每一种appender都表示一种日志的输出介质,如日志文件、EvengLog、数据库、控制台、邮件、ASP.NET页面等。
本文对各种内置的appender的配置提供了示例,但却远称不上详尽。要想了解每一种appender的参数和选项的说明,请参看该appender的SDK文档。
以下示例都是.NET 2.0下进行的, log4net的版本为1.2.10。
AdoNetAppender
详情参考 log4net.Appender. AdoNetAppender SDK文档 。
AdoNetAppender的相关配置内容取决于目标数据库的provider。下面仅提供SQL Server 2000的例子。
首先建立数据表:
(
[ Id ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL ,
[ Date ] [ datetime ] NOT NULL ,
[ Thread ] [ varchar ] ( 255 ) NOT NULL ,
[ Level ] [ varchar ] ( 50 ) NOT NULL ,
[ Logger ] [ varchar ] ( 255 ) NOT NULL ,
[ Message ] [ varchar ] ( 4000 ) NOT NULL ,
[ Exception ] [ varchar ] ( 2000 ) NULL
)
然后添加配置:
< bufferSize value ="2" />
< connectionType value ="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089" />
< connectionString value ="server=(local);database=TestBase;integrated security=false;persist security info=True;UID=sa;PWD=" />
< commandText value ="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
< parameter >
< parameterName value ="@log_date" />
< 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 >
bufferSize
表示批处理的日志事件,可以避免每次日志事件都访问数据库;ConnectionType
指定了要使用的IDbConnection的完全限定类型名称;connectionString
表示连接字符串;CommandText
是SQL语句或存储过程;最后一组parameter
节点描述了SQL语句或存储过程需要的参数。
AspNetTraceAppender
详情参考 log4net.Appender.AspNetTraceAppender SDK 文档 。
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</ layout >
</ appender >
这段配置可将日志信息输出到页面的Trace上下文环境。如果日志的级别低于WARN,会以
System.Web.TraceContext.Write方法输出;如果级别为WARN或WARN以上则会以
System.Web.TraceContext.Warn方法输出,下图中的日志信息的不同颜色可以说明这一点。
效果图如下:
这在进行页面调试的时候可是很方便的。
BufferingForwardingAppender
详情参考 log4net.Appender.BufferingForwardingAppender SDK 文档 。
< bufferSize value ="5" />
< lossy value ="true" />
< evaluator type ="log4net.Core.LevelEvaluator" >
< threshold value ="WARN" />
</ evaluator >
< appender-ref ref ="LogFileAppender" />
< appender-ref ref ="AspNetTraceAppender" />
</ appender >
BufferingForwardingAppender的主要作用是将输出到指定类型(这里是LogFileAppender)的
Appender的日志信息进行缓存。bufferSize属性指定了缓存的数量,如果value为5,那么将在信息量达到6条的时候,把这些日志批量输
出。appender-ref属性指定了缓存的Appender类型,同root节点一样,这里可以指定多个。
ColoredConsoleAppender
详情参考log4net.Appender.ColoredConsoleAppender SDK 文档 。
ColoredConsoleAppender将日志信息输出到控制台。默认情况下,日志信息被发送到控制台标准输出流。下面这个示例演示了如何高亮显示Error信息。
< mapping >
< level value ="ERROR" />
< foreColor value ="White" />
< backColor value ="Red, HighIntensity" />
</ mapping >
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</ layout >
</ appender >
效果如下:
还可以为不同的级别指定不同的颜色:
< mapping >
< level value ="ERROR" />
< foreColor value ="White" />
< backColor value ="Red, HighIntensity" />
</ mapping >
< mapping >
< level value ="DEBUG" />
< backColor value ="Green" />
</ mapping >
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</ layout >
</ appender >
效果如下:
ConsoleAppender
详情参考 log4net.Appender.ConsoleAppender SDK 文档 。
ConsoleAppender将日志信息输出到控制台标准输出流。
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
EventLogAppender
详情参考 log4net.Appender.EventLogAppender SDK 文档 。
EventLogAppender将日志写入本地机器的应用程序事件日志中。默认情况下,该日志的源(Source)是AppDomain.FriendlyName,也可以手动指定其它名称。
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
FileAppender
详情参考 log4net.Appender.File Appender SDK 文档 。
FileAppender将日志信息输出到指定的日志文件。
<!-- [if gte vml 1]> <![endif]--><!-- [if !vml]-->
< param name ="File" value ="WebUtilClient.log" />
< param name ="AppendToFile" value ="true" />
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
File指定了文件名称,可以使用相对路径,此时日志文件的位置取决于项目的类型(如控制台、Windows Forms、ASP.NET等);也可以使用绝对路径;甚至可以使用环境变量,如<file
value="${TMP}\log-file.txt" />。
AppendToFile指定是追加到还是覆盖掉已有的日志文件。
还可以添加如下属性<lockingModel
type="log4net.Appender.FileAppender+MinimalLock" />来使用最小锁定模型(minimal locking model),以允许多个进程可以写入同一个文件。
ForwardingAppender
详情参考 log4net.Appender.ForwardingAppender
SDK 文档
。
ForwardingAppender可以用来为一个Appender指定一组约束。看下面这个示例:
< threshold value ="WARN" />
< appender-ref ref ="ConsoleAppender" />
</ appender >
在这个示例中,为ConsoleAppender添加了约束,Threshold为WARN。这意味着对于一条日志信息,如果直接使用
ConsoleAppender,那么不论它是什么级别,总会进行输出,而如果使用这个ForwardingAppender,则只有那些WARN或
WARN以上的日志才会发送到ConsoleAppender。
MemoryAppender
详情参考 log4net.Appender.MemoryAppender
SDK 文档
。
似乎不应该使用配置文件来配置MemoryAppender,但如果你非要这么做,看看这个示例(未验证):
< onlyFixPartialEventData value ="true" />
</ appender >
NetSendAppender
详情参考 log4net.Appender.NetSendAppender SDK 文档 。
NetSendAppender向特定用户的屏幕发送消息(未验证)。
< threshold value ="ERROR" />
< server value ="Anders" />
< recipient value ="xym" />
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</ layout >
</ appender >
OutputDebugStringAppender
详情参考 log4net.Appender.OutputDebugStringAppender
SDK 文档
。
下面这个例子描述了如何配置该Appender以向OutputDebugString API写入日志(未验证)。
< layout type ="log4net.Layout.PatternLayout" >
< conversionPattern value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</ layout >
</ appender >
RemotingAppender
详情参考 log4net.Appender.RemotingAppender
SDK 文档
。
RemotingAppender向特定的Sink发送日志信息(未验证):
<!-- [if gte vml 1]><![endif]--><!-- [if !vml]-->
< sink value ="tcp://localhost:8085/LoggingSink" />
< lossy value ="false" />
< bufferSize value ="95" />
< onlyFixPartialEventData value ="true" />
</ appender >
RollingFileAppender
详情参考 log4net.Appender.RollingFileAppender
SDK 文档
。
RollingFileAppender以FileAppender为基础,与后者有着相同的配置选项。
下面这个例子演示了如何配置RollingFileAppender以写入log.txt文件。写入的文件名总是为 log.txt(StaticLogFileName参数指定为true);根据文件大小(RollingStyle)来生成新的文件;最多保存有10个 文件(MaxSizeRollBackups属性,而且一旦写满10个文件,就不再写入日志了),每个文件最大为10KB。这些文件名称为 log.txt.1, log.txt.2…等。
< param name ="File" value ="log\Log.txt" />
< param name ="AppendToFile" value ="true" />
< param name ="MaxSizeRollBackups" value ="10" />
< param name ="MaximumFileSize" value ="5MB" />
< param name ="RollingStyle" value ="Size" />
< param name ="StaticLogFileName" value ="true" />
< layout type ="log4net.Layout.PatternLayout" >
< param name ="ConversionPattern" value ="%d [%t] %-5p %c [%x] - %m%n" />
</ layout >
</ appender >
SmtpAppender
详情参考 log4net.Appender.SmtpAppender
SDK 文档
。
SmtpAppender通过Smtp邮件服务器发送日志信息:
< authentication value ="Basic" />
< to value ="anderscui@tom.com" />
< from value ="anderscui@163.com" />
< username value ="anderscui" />
< password value ="password" />
< subject value ="test logging message" />
< smtpHost value ="smtp.163.com" />
< bufferSize value ="512" />
< lossy value ="true" />
发表评论
-
COM class factory for component with CLSID {000245
2009-06-16 17:27 2025If you add a reference to Micro ... -
Visual Studio.NET 在 Windos Server 2003 安装 问题
2009-04-06 07:34 10931. 单击“开始”,单击“运行”,键入 control a ... -
IIS 如何使用 SSL 双向 认证
2009-04-01 16:39 0http://www.cnblogs.com/asyuras/ ... -
ASP.NET Oracle 驱动 配置中的错误更改
2009-03-06 08:56 2138在用VS.NET2005+Oracle9.2进行开发的时候,在 ... -
Visual Studio .net 2005 的 toolbox 控件不见了? 咋办?
2009-01-08 19:34 1767deleting the hidden files: tool ... -
关于Dell D630 类似机器 NVIDA 显卡下 .NET Datagridview 刷新速度
2008-12-27 22:10 0http://connect.microsoft.com/Vi ... -
render的becky!配置设置文件[有效解决乱码]
2008-12-10 10:51 2101发信人: render (润德), 信区: NewSoftwa ... -
the path My Pictures contains a invalid character
2008-11-18 11:22 2152WSE 安装出现问题。路径问题 方法如下: 打开注册表: ... -
DataGridView 选中一行后,保持前景色(颜色,字体)不变
2008-11-13 18:35 4628最近在做项目的时候,发现了一个问题,就是当DataGridVi ... -
.net MDI 窗体菜单显示子窗体ICON图标,以及合并子窗体菜单问题
2008-11-13 08:42 3340最近在做项目的时候,发现MDI父窗体的主菜单的左边,当子窗体最 ...
相关推荐
根据项目需要,要求日志文件名及输出的日志内容头为特殊的格式,因此重写了log4j的一些方法,如要求的格式和项目不同,可根据示例参考进行再次的修改
本文主要是介绍如何在Visual Studio2008中使用log4net快速创建系统日志,如何扩展以输出自定义字段。 2、一个简单的使用实例 第一步:在项目中添加对log4net.dll的引用,这里引用版本是1.2.10.0。 第二步:程序启动...
实现log4net的自定义字段扩展 Log4Net中添加自定义日志信息。我们在写日志的时候并不是只写消息(Message),有些情况需要记录自定义的日志信息等。在Log4Net中增加自定义字段UserName(用户名),Category(类别)这两...
3 在程序中使用log4net 3.1 定义配置文件 3.1.3 3.1.4 log4net.Layout.PatternLayout中的转换模式(ConversionPattern) 3.1.5 3.2 使用配置文件 3.2.1 关联配置文件 3.2.2 创建或获取日志对象 3.2.3 输出日志信息 ...
自定义日志模块(接口及代理实现),而不直接使用第三方日志框架接口,避免在日志框架升级或者切换时,代码过多耦合。 这个举例说明一下: 比如,在某一项目开始时使用的是“log4j”框架,后面经过研究发现“sf4j...
Log4j有三个主要的组件:Loggers,Appenders和Layouts,这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和...
Orhan Obut 大神分享的一开源项目Logger输出日志,非常好用,该开源库能够把: 线程的信息 类的信息 方法的信息 格式打印json、xml等 点击链接跳转到源码打印处 此外还可根据自己需求进行定制化,并且还可日志输出...
log4j.rootLogger=DEBUG,CONSOLE,A1,im log4j.addivity.org.apache=true # 应用于控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.Threshold=DEBUG log4j.appender.CONSOLE.Target=...
labview操作logger,日志记录
本小结为基于loggor实现的golang通用日志记录器,用于记录开发过程中的各类非业务日志(业务日志可通过设置不同的日志类型,以一定的切分方式,输出至指定文件)
Log4j-Logger详细说明以及应用
var viewlog = Logger.get("view"); viewlog.warn("where am I?"); viewlog.error("I don't want work!!"); Logger.get("view").info("Goodbye"); // Above will pop an window, and output these in console: // ...
使用说明 一:下载log4net.dll 将log4net.dll拷贝到bin下面,并添加对它的引用 二:在数据库里面创建表Log create table LOG ( LOGDATE VARCHAR2(20), LOG_LEVEL VARCHAR2(255), LOGGER VARCHAR2(255), MESSAGE ...
log4j的使用习惯,让每个类都拥有一个private static的Logger对象,用来输出该类中的全部日志信息 ,使用xml文件来完成对log4j环境的配置。在项目的main class中的静态初始化块里放log4j环境的配置代码。注意:在一...
log4j.rootLogger=DEBUG,A1 设置输出方式,常用的有: ConsoleAppender 在控制器中输出信息 RollingFileApperder 在文件中输出信息,设置此放式后必须设置file名称和路径 dailyRollingFileApperder 以日为单位划分在...
C# Logger 是按照 Apache 的 log4j 项目设计的。它是一个日志工具,可以用来将事件如调试、信息、警告和错误信息写到 Windows 事件日志中。
log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...
logger记录日志logger记录日志logger记录日志logger记录日志
Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导入你的工程LIB中。 Log4j之所以受欢迎的原因之一是它的灵活性。Log4j提供了灵活的配置方法,默认是调用BasicConfigurator.configure()来进行配置,但...
提示:log4j:WARN Please initialize the log4j system properly,log4j:WARN No appenders could be found for logger错误的处理办法