Posted by & filed under ASP.NET.

如何使用log4net在Web中应用?其实很简单,你只要对程序作如何修改即可:
1.在common中加入log4netHelper.cs

public class log4netHelper

{

public static void debug(string message)

{

log4net.ILog log = log4net.LogManager.GetLogger(“Test”);

if (log.IsDebugEnabled)

{

log.Debug(message);

}

log = null;

}

public static void error(string message)

{

log4net.ILog log = log4net.LogManager.GetLogger(“Test”);

if (log.IsErrorEnabled)

{

log.Error(message);

}

log = null;

}

public static void fatal(string message)

{

log4net.ILog log = log4net.LogManager.GetLogger(“Test”);

if (log.IsFatalEnabled)

{

log.Fatal(message);

}

log = null;

}

public static void info(string message)

{

log4net.ILog log = log4net.LogManager.GetLogger(“Test”);

if (log.IsInfoEnabled)

{

log.Info(message);

}

log = null;

}

public static void warn(string message)

{

log4net.ILog log = log4net.LogManager.GetLogger(“Test”);

if (log.IsWarnEnabled)

{

log.Warn(message);

}

log = null;

}

}

2.在AssemblyInfo.cs中增加一行

[assembly: log4net.Config.XmlConfigurator(ConfigFile = “log4net.config”, Watch = true)]

3.增加log4net.config文件,进行要求的配置:每天换文件名等,请参考

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<configSections>
<section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net” />
</configSections>
<log4net>
<!– OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL –>
<!– Set root logger level to ERROR and its appenders –>
<root>
<level value=”ALL”/>
<appender-ref ref=”SysAppender”/>
</root>

<!– Print only messages of level DEBUG or above in the packages –>
<logger name=”Test”>
<level value=”DEBUG”/>
<appender-ref ref=”SysAppender” />
</logger>

<appender name=”SysAppender” type=”log4net.Appender.RollingFileAppender,log4net” >
<param name=”File” value=”log/” />
<param name=”AppendToFile” value=”true” />
<param name=”RollingStyle” value=”Date” />
<param name=”DatePattern” value=”&quot;Logs_&quot;MMddyyyy&quot;.txt&quot;” />
<param name=”StaticLogFileName” value=”false” />
<layout type=”log4net.Layout.PatternLayout,log4net”>
<param name=”ConversionPattern” value=”%d{dd-MM-yyyy} [%t] %-5p %c – %m %F %n” />
<param name=”Header” value=”&#13;&#10;———————-header————————–&#13;&#10;” />
<param name=”Footer” value=”&#13;&#10;———————-footer————————–&#13;&#10;” />
</layout>
</appender>
</log4net>

</configuration>

4.使用:

sis_common.log4netHelper.info(“Start Page….”);

 

LOG4Net.config修改了一下
1.原来出来只有日期,加上时间
2.只留下    <root>
<level value=”ALL”/>
<appender-ref ref=”SysAppender”/>
</root>

其他的删除。

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<configSections>
<section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net” />
</configSections>
<log4net>
<!– OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL –>
<!– Set root logger level to ERROR and its appenders –>
<root>
<level value=”ALL”/>
<appender-ref ref=”SysAppender”/>
</root>

<appender name=”SysAppender” type=”log4net.Appender.RollingFileAppender,log4net” >
<param name=”File” value=”log/” />
<param name=”AppendToFile” value=”true” />
<param name=”RollingStyle” value=”Date” />
<param name=”DatePattern” value=”&quot;Logs_&quot;MMddyyyy&quot;.txt&quot;” />
<param name=”StaticLogFileName” value=”false” />
<layout type=”log4net.Layout.PatternLayout,log4net”>
<param name=”ConversionPattern” value=”%d{dd-MM-yyyy hh:mm:ss} [%t] %-5p %c – %m %F %n” />
<param name=”Header” value=”&#13;&#10;———————-header————————–&#13;&#10;” />
<param name=”Footer” value=”&#13;&#10;———————-footer————————–&#13;&#10;” />
</layout>
</appender>
</log4net>

</configuration>

Log4net日志文件自动按月份存放和日志独占问题的解决


让log4net日志文件自动按月份存放

log4net日志文件的作用还真不小,可以保存管理员、用户对数据库的任何操作,保存管理员和用户的登录记录,分析系统运行错误,所以不舍得随便将日志文件Delete。如果时间长了,日志文件夹一定会有很多很多日志文件,不便于管理员查看。

所以让log4net日志文件自动按月份存放是必须的,其实方法很Easy,额是突发奇想在DatePattern
value中增加“yyyyMM\”,运行后果然如额所愿。

也就是修改Web.Config文件如下:

<file
value=”Log\”/><!–日志文件夹及文件名开头–>
<DatePattern
value=”yyyyMM\yyyy-MM-dd&quot;.log&quot;”/><!–文件名后面加上.log后缀,必须使用转义字符–>

解决log4net独占日志文件的问题

由于log4net默认情况下会独占日志文件该文件不能被File.Open,否则会出现异常错误,甚为郁闷。网上找到的解决方法:

修改Web.Config文件,在<appender
name=”RollingFileAppender”
type=”log4net.Appender.RollingFileAppender”></appender>节中加入:<lockingModel
type=”log4net.Appender.FileAppender+MinimalLock” />就可以了,即使用最小锁定模型(minimal
locking model),以允许多个进程可以写入同一个文件

所以现在最新的log4net.config是:
<?xml
version=”1.0″ encoding=”utf-8″
?>
<configuration>
<configSections>
<section
name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler,log4net”
/>
</configSections>
<log4net>
<!– OFF, FATAL,
ERROR, WARN, INFO, DEBUG, ALL –>
<!– Set root logger level to ERROR
and its appenders –>
<root>
<level
value=”ALL”/>
<appender-ref
ref=”SysAppender”/>
</root>

<appender name=”SysAppender”
type=”log4net.Appender.RollingFileAppender,log4net” >
<lockingModel
type=”log4net.Appender.FileAppender+MinimalLock” />
<param name=”File”
value=”log/” />
<param name=”AppendToFile” value=”true”
/>
<param name=”RollingStyle” value=”Date” />
<param
name=”DatePattern”
value=”&quot;Logs_&quot;MMddyyyy&quot;.txt&quot;”
/>
<param name=”StaticLogFileName” value=”false” />
<layout
type=”log4net.Layout.PatternLayout,log4net”>
<param
name=”ConversionPattern” value=”%d{dd-MM-yyyy hh:mm:ss} [%t] %-5p %c – %m
(%F:%L) %n” />
<param name=”Header”
value=”&#13;&#10;———————-header————————–&#13;&#10;”
/>
<param name=”Footer”
value=”&#13;&#10;———————-footer————————–&#13;&#10;”
/>
</layout>
</appender>
</log4net>

</configuration>

Comments are closed.