log4net 按日期生成日志的问题

jeason126 2008-07-21 03:01:26
我是新手,log4net 按日期分别生成日志时会出现一次生成两个日志文件的问题,如:

在2008年7月21日生成两个日志文件分别为:20080721.htm和20080721.htm20080721.htm,也就是说前一个生成的日志文件名是正常的,但后面一个生成的日志文件名为:20080721.htm20080721 扩展名为htm 这是为什么?请各位高手在这里指点,谢谢了.


配置文件如下:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--log4net配置 BEGIN-->
<log4net>
<!--日志输出格式-->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--存放日志的路径-->
<param name="File" value="D:\\DEBUG\\" />
<!--是否想日志文件中追加-->
<param name="AppendToFile" value="true" />
<!--最多保存多少天的记录-->
<param name="MaxSizeRollBackups" value="100" />
<!--日期文件是否固定不变-->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>

<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:\\INFO\\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="10" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<param name="RollingStyle" value="Date" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>

<root>
<level value="Info" />
<appender-ref ref="InfoAppender" />
</root>

<logger name="File">
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
...全文
1254 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
windstore 2010-09-03
  • 打赏
  • 举报
回复
这个问题解决没?
bino 2008-09-05
  • 打赏
  • 举报
回复
我也是一样,碰到这个问题,还没有解决。。。
jeason126 2008-07-21
  • 打赏
  • 举报
回复
刚刚试过8楼的方法
在我这里好像不好用,没有创建出日志文件
yagebu1983 2008-07-21
  • 打赏
  • 举报
回复
UP!!!
jeason126 2008-07-21
  • 打赏
  • 举报
回复
谢谢8楼,9楼的建议
我正在调试希望你们的方法管用
fang1572 2008-07-21
  • 打赏
  • 举报
回复
你试试把<param name="File" value="D:\\DEBUG\\" /> 写成<param name="File" value="D:\\DEBUG\\20080720.html" />
再把<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" /> 注释掉,看看会不会有问题
lhsxsh 2008-07-21
  • 打赏
  • 举报
回复
请看下本人的配制文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net-net-1.0"
/>
</configSections>

<log4net>

<logger name="Log">
<level value="ALL"/>
<appender-ref ref="RollingLog" />
</logger>
<logger name="Err">
<level value="ALL"/>
<appender-ref ref="RollingErr" />
</logger>

<appender name="RollingLog" type="log4net.Appender.RollingFileAppender">
<file value="Log\Log" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.txt'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t]%c %m%n" />
</layout>
</appender>


<appender name="RollingErr" type="log4net.Appender.RollingFileAppender">
<file value="Err\Err" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'.txt'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t]%c %m%n" />
</layout>
</appender>



</log4net>

</configuration>
jeason126 2008-07-21
  • 打赏
  • 举报
回复
请高手速来指点啊~~~楼上的那里去了
jeason126 2008-07-21
  • 打赏
  • 举报
回复
改源代码??
怎么改呀?能说的具体点吗?
各位以前有出现过这样的问题吗?
rqx110 2008-07-21
  • 打赏
  • 举报
回复
改改Log4Net的源代码就行了。
liuzimao 2008-07-21
  • 打赏
  • 举报
回复
没做过这种东西,友情帮顶,顺便学习下
jeason126 2008-07-21
  • 打赏
  • 举报
回复
对啊~
是两个文件
D:\\INFO\\存的是日常的日志一些用户操作的sql语句什么的

D:\\DEBUG\\存的是异常日志

这两个日志都出现我上面说的问题,不知道怎么解决
jeason126 2008-07-21
  • 打赏
  • 举报
回复
在补充一下cs代码:
private static log4net.ILog logInfo = null;
private static log4net.ILog logDebug = null;
private static object lockHelper = new object();

public static log4net.ILog LogDebug
{
get
{
if (logDebug == null)
lock (lockHelper)
if (logDebug == null)
logDebug = log4net.LogManager.GetLogger("File");
return logDebug;
}
}

public static log4net.ILog LogInfo
{
get
{
if (logInfo == null)
lock (lockHelper)
if (logInfo == null)
logInfo = log4net.LogManager.GetLogger("Info");
return logInfo;
}
}

在需要输出日志的地方写:
LogInfo.Info("\r\n操作的sql语句:" + strsql + "<BR>数据库方法:ExecuteScalarSql(string strsql, SqlParameter[] parms)"); 或者
LogInfo.Debug("\r\n操作的sql语句:" + strsql + "<BR>数据库方法:ExecuteScalarSql(string strsql, SqlParameter[] parms)");
fang1572 2008-07-21
  • 打赏
  • 举报
回复
是D:\\INFO\\还是D:\\DEBUG\\下有两个日志文件啊

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧