有人用过 Log4Net 来记日志吗?关于配置文件的问题。

sincerity 2008-01-04 02:44:56
近期有一个项目需要使用到 Log4Net,以前没有弄过这东西,弄了下,现在无法生成日志,不知道问题出在哪儿了。

是这样的,我想把 Log4Net 再封装一下,就在解决方案中单独新建了一个类库项目,起名 Test.Log。
在这个项目下,引用了 log4net.dll,然后做了如下的事:
1、创建一个配置文件,起名 Log4Net.config,把它作为单独的配置文件,内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<!-- log4net配置 -->
<log4net>
<!-- 指定用哪种 appender 输出,以及其默认的 level -->
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<logger name="File_Log">
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="AppendToFile" value="true" />
<param name="File" value="D:\LogTest.txt" />
<param name="MaxSizeRollBackups" value="10" />
<param name="MaximumFileSize" value="100KB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
</layout>
</appender>
</log4net>
</configuration>

2、在这个项目的 AssemblyInfo.cs 文件的最后添加了一行:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
3、新建了一个类 TestLog.cs 来封装 Log4Net,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using log4net;

namespace Test.Log
{
#region log类
/// <summary>
/// 公用类
/// </summary>
public class LogBLL
{
public static void Debug(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
if (log.IsDebugEnabled)
{
log.Debug(message);
}
log = null;
}
public static void Error(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
if (log.IsErrorEnabled)
{
log.Error(message);
}
log = null;
}
public static void Fatal(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
if (log.IsFatalEnabled)
{
log.Fatal(message);
}
log = null;
}
public static void Info(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
if (log.IsInfoEnabled)
{
log.Info(message);
}
log = null;
}

public static void Warn(string message)
{
log4net.ILog log = log4net.LogManager.GetLogger("File_Log");
if (log.IsWarnEnabled)
{
log.Warn(message);
}
log = null;
}
}
#endregion log类
}

然后,在同一个解放方案中,建了一个测试的 Windows 应用程序项目,起名 TestLogExample。
在这个项目下,添加 TestLog 项目的引用,然后在 Form1 里写代码测试,如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Bap.Log;

namespace Bap.LoggingExample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
LogBLL.Debug("测试信息");
}
}
}

结果什么文件都没有生成。DEBUG后,发现这一步生成的 log 是 null。
log4net.ILog log = log4net.LogManager.GetLogger("File_Log");//log为null
是不是没有读取到 Log4Net.config 这个配置文件?可是我哪一部做的有问题呢?

很急,请高人解答,分数不够可以再加,谢了。
...全文
1880 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhf928 2008-05-24
  • 打赏
  • 举报
回复
我滴,乖乖,找了一天都没有解决
sincerity 2008-01-04
  • 打赏
  • 举报
回复
找到问题了,是 Log4Net.config 找不到。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
这里的路径改成绝对路径就可以了,真是晕倒
waterjkd 2008-01-04
  • 打赏
  • 举报
回复
上边的不好看,重新贴一下

<configuration>
<!-- Register a section handler for the log4net section -->
<configSections>
<!-- <section name="log4net" type="System.Configuration.IgnoreSectionHandler" /> -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!-- This section contains the log4net configuration settings -->
<log4net debug="false">
<!--Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="INFO"/>
<file value="log\RollingLog.log"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="100"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] "/>
<footer value="[Footer] "/>
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
</layout>
</appender>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<threshold value="DEBUG"/>
<file value="log\MsrLog.log"/>
<!--Example using environment variables in params-->
<!-- <file value="${TMP}\log-file.txt" /> -->
<appendToFile value="true"/>
<!--An alternate output encoding can be specified-->
<!-- <encoding value="unicodeFFFE" /> -->
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] "/>
<footer value="[Footer] "/>
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline"/>
</layout>
</appender>
<!--messages in emails-->
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<threshold value="FATAL"/>
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline"/>
<subject value="%-5level %logger"/>
<to value="jingtao.gao1@hisoft.com"/>
<from value="sdf@me.co.uk"/>
<smtpHost value="mail.hisoft.com"/>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender"/>
<!-- <appender-ref ref="ConsoleAppender" /> -->
<!-- <appender-ref ref="ADONetAppender_SqlServer" /> -->
<!-- <appender-ref ref="NetSendAppender" /> -->
<appender-ref ref="SmtpAppender"/>
<!-- <appender-ref ref="RollingLogFileAppender" /> -->
</root>
</log4net>
........................................等等

封装的类:

namespace Msr.CommonLib
{
namespace General
{
/// <summary>
///
/// </summary>
public class JKLCLogging
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

/// <summary>
///
/// </summary>
/// <param name="strMsg"> </param>
public static void Fatal(string strMsg)
{
log.Fatal(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"> </param>
public static void Error(string strMsg)
{
log.Error(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"> </param>
public static void Warn(string strMsg)
{
log.Warn(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"> </param>
public static void Debug(string strMsg)
{
log.Debug(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"> </param>
public static void Info(string strMsg)
{
log.Info(strMsg);
}

}
}
}
waterjkd 2008-01-04
  • 打赏
  • 举报
回复
<configuration>
<!-- Register a section handler for the log4net section -->
<configSections>
<!--<section name="log4net" type="System.Configuration.IgnoreSectionHandler" />-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<!-- This section contains the log4net configuration settings -->
<log4net debug="false">
<!--Define some output appenders -->
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<threshold value="INFO"/>
<file value="log\RollingLog.log"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="100"/>
<rollingStyle value="Size"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] "/>
<footer value="[Footer] "/>
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
</layout>
</appender>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<threshold value="DEBUG"/>
<file value="log\MsrLog.log"/>
<!--Example using environment variables in params-->
<!--<file value="${TMP}\log-file.txt" />-->
<appendToFile value="true"/>
<!--An alternate output encoding can be specified-->
<!--<encoding value="unicodeFFFE" />-->
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] "/>
<footer value="[Footer] "/>
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] <%property{auth}> - %message%newline"/>
</layout>
</appender>
<!--messages in emails-->
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<threshold value="FATAL"/>
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline"/>
<subject value="%-5level %logger"/>
<to value="jingtao.gao1@hisoft.com"/>
<from value="sdf@me.co.uk"/>
<smtpHost value="mail.hisoft.com"/>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender"/>
<!--<appender-ref ref="ConsoleAppender" />-->
<!-- <appender-ref ref="ADONetAppender_SqlServer" /> -->
<!-- <appender-ref ref="NetSendAppender" /> -->
<appender-ref ref="SmtpAppender"/>
<!--<appender-ref ref="RollingLogFileAppender" />-->
</root>
</log4net>
........................................等等

封装的类:

namespace Msr.CommonLib
{
namespace General
{
/// <summary>
///
/// </summary>
public class JKLCLogging
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

/// <summary>
///
/// </summary>
/// <param name="strMsg"></param>
public static void Fatal(string strMsg)
{
log.Fatal(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"></param>
public static void Error(string strMsg)
{
log.Error(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"></param>
public static void Warn(string strMsg)
{
log.Warn(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"></param>
public static void Debug(string strMsg)
{
log.Debug(strMsg);
}

/// <summary>
///
/// </summary>
/// <param name="strMsg"></param>
public static void Info(string strMsg)
{
log.Info(strMsg);
}

}
}
}
ojekleen 2008-01-04
  • 打赏
  • 举报
回复
log4netConfig.xml文件没有?
yuzhlhua 2008-01-04
  • 打赏
  • 举报
回复
mark
sincerity 2008-01-04
  • 打赏
  • 举报
回复
求教,有人会吗?很急。
sincerity 2008-01-04
  • 打赏
  • 举报
回复
帖子里最后引用的名称写错了,Bap.Log 应该是 TestLog,这里只是提问没修改,和问题的原因没有关系,判答,谢谢。

110,534

社区成员

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

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

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