log4net记录日志

    记录日志可以帮助开发人员很快找到问题所在。所以,每个系统中都会有记录日志的功能。本篇文章为大家分享小编正在做的系统中用到的记录日志的方法。

    首先,需要下载log4net,并引用。

代码分享

记录日志最主要的部分是配置文件:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <!--定义日志的输出媒介-->
    <!--在root中开启或关闭日志-->
    <root>
      <!--日志存放的地方-->
      <level value="Debug"/>
      <!--文件形式记录日志-->
      <appender-ref ref="RollingLogFileAppender"/>  <!--这里的ref是appender中的name-->
      <!--控制台控制显示日志-->
      <appender-ref ref="ConsoleAppender"/>
    </root>
    <!--定义输出到文件中-->
    <!--将日志以回滚文件的形式写到文件中。-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置和日志文件名-->
      <file value="log/log4net.txt"/>
      <appendToFile value="true"/>
      <rollingStyle value="Size"/>
      <!--每个日志文件最大100KB-->
      <maxSizeRollBackups value="10"/>
      <!--每个日志文件最大1000KB-->
      <maximumFileSize value="1000kb"/>
      <rollingStyle value="size"/>
      <staticLogFileName value="true"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志开头和末尾的文字说明-->
        <header value="
&#13;&#10;[============================应用程序日志开始============================ ]
</span><span style="font-family:KaiTi_GB2312;font-size:24px;">&#13;&#10;</span><span style="font-family:KaiTi_GB2312;font-size:24px;">" />
</span><span style="font-family:KaiTi_GB2312;font-size:24px;"></span><pre name="code" class="plain"><span style="font-family:KaiTi_GB2312;font-size:24px;">        <footer value="
</span><span style="font-family:KaiTi_GB2312;font-size:24px;">&#13;&#10;</span><span style="font-family:KaiTi_GB2312;font-size:24px;">[ ============================应用程序日志结束============================]
</span><span style="font-family:KaiTi_GB2312;font-size:24px;">&#13;&#10;</span><span style="font-family:KaiTi_GB2312;font-size:24px;">" />
</span><span style="font-family:KaiTi_GB2312;font-size:24px;"></span><pre name="code" class="plain"><span style="font-family:KaiTi_GB2312;font-size:24px;"></span><pre name="code" class="plain"><span style="font-family:KaiTi_GB2312;font-size:24px;">        <!--%d(datetime):输出当前语句运行的时刻 -->
        <!--%t(thread id):当前语句所在的线程ID -->
        <!--%c(class):当前日志对象的名称-->
        <!--%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 -->
        <!--%n(new line):换行 -->
        <conversionPattern value="%d [%t] %c - %m%n"/>
      </layout>
    </appender></span>

 
 
 

窗体测试代码:

<span style="font-family:KaiTi_GB2312;font-size:24px;">//注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息  
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace TestLog4net
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        
        private log4net.ILog log = log4net.LogManager.GetLogger(typeof(MainWindow));
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                int a = Convert.ToInt32(textBox1.Text);
                int b = Convert.ToInt32(textBox2.Text);
                a = b;
            }
            catch (Exception ex)
            {
                log.Error("出错了!", ex);
                MessageBox.Show("已经写入日志了!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
    }
}</span>

   注意:上面的代码中有这么一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)](在需要使用log4net的类的namespace处), 如果没有这句话,日志就写不进去。这句话是指定log4net使用.config文件来读取配置信息 。

    效果图:


问题汇总

   代码完成之后,生成解决方案的时,可能会报错:

   修改程序属性,将目标框架默认的.NETFramework4 Client Profile修改为.NET Framework4之后再重新生成解决方案就可以了。

   若使用的是wpf界面(本人使用的是),修改完成之后,MainWindow.xaml报错:

   未找到原因,只是在重复改目标框架后,再次打开,不再报错了。若还不行,需要重新删除,再建项。

配置文件简单介绍:

每个<appender>子节点代表一种记录日志的方式:

AdoNetAppender:利用ADO.NET记录到数据库的日志。
AnsiColorTerminalAppender:在ANSI 窗口终端写下高亮度的日志事件。
AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。
BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
ConsoleAppender:将日志输出到控制台。
EventLogAppender:将日志写到Windows Event Log.
FileAppender:将日志写到文件中。
LocalSyslogAppender:将日志写到local syslog service (仅用于UNIX环境下).
MemoryAppender:将日志存到内存缓冲区。
NetSendAppender:将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。
RemotingAppender:通过.NET Remoting将日志写到远程接收端。
RollingFileAppender:将日志以回滚文件的形式写到文件中。
SmtpAppender:将日志写到邮件中。
TraceAppender:将日志写到.NET trace 系统。
UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。

log4net的参数介绍:

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):换行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称,例如:
%f(file):输出语句所在的文件名。
%l(line):输出语句所在的行号。
%数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

文章分享

1. Log4net使用详解(续)

2. Log4net保存自定义信息到数据库

3. Asp.net夜话之十一:web.config详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值