• winform 下log4net简单应用示例及“缺少log4net引用”的处理方案


    1.添加应用log4net.dll

    2.新增log4net.config文件,文件内容如下

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <log4net>
        <root>
          <level value="ALL" />
          <appender-ref ref="LogFileAppender" />
        </root>
        <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
          <param name="File" value="Log.txt" />
          <param name="AppendToFile" value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <!--<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n" />-->
            <!--<param name="Header" value="/************************  Start  ********************************/" />
            <param name="Footer" value="/************************   End   ********************************/" />-->
            <param name="ConversionPattern" value="/************************  Start  ********************************/%n发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n%n" />
          </layout>
        </appender>
        <logger name ="MyLogger">
          <level value="ERROR"></level>
          <appender-ref ref="LogFileAppender"></appender-ref>
        </logger>
      </log4net>
    </configuration>

    3.修改文件AssemblyInfo.cs,在文件的最后添加以下内容

    [assembly: log4net.Config.DOMConfigurator(ConfigFile = "log4net.config", Watch = true)]

    4.方法调用

         private static log4net.ILog log = null;private static object lockHelper = new object();
            public static log4net.ILog Log
            {
                get
                {
                    if (log == null)
                    {
                        lock (lockHelper)
                        {
                            log = log4net.LogManager.GetLogger("MyLogger");
                        }
                    }
                    return log;
                }
            }public static void LogInfo(string msg)
            {
                Log.Error(msg);
            }

    5.查看log文件以确认log正常写入了

    如何防止自定义的logger和root重复写入日志

        logger是从root继承而来,默认的用logger写的日志会被root重复写一份,如何防止这种情况呢。

        其实log4net提供了一种很好的解决方式,断开logger与root的继承关系,只要在配置文件里的logger加上属性additivity="false" 就可以了。

    <logger name ="MyLogger" additivity="false" >
          <level value="Info"></level>
          <appender-ref ref="LogFileAppender"></appender-ref>
        </logger>

    注:在winform中可能会遇到“缺少log4net引用”的错误,这个其实很简单。选择项目属性进入如下图所示的界面,

    然后将目标框架选择为“非客户端配置”在本图片中为黄色高亮的,客户端配置的为精简版的,有许多组件不包含其中的,然后保存成功即可。

    cmd中启动exe 方法:

    C:Users>start D:项目HSR runksrcHSRailwayStores20111128PosCloseDate4inDebugPosCloseDate4.exe  20140331

    程序中调用方法:

    /********* 调用STLD解析,生成小票程序 Start ********/
    Process oCallPosCloseDate4Process = new Process();
    ProcessStartInfo startInfo = new ProcessStartInfo();
    startInfo.FileName = "PosCloseDate4.exe " + strbussinessDay;
    oCallPosCloseDate4Process.StartInfo.UseShellExecute = false;
    oCallPosCloseDate4Process.StartInfo.RedirectStandardOutput = true;
    oCallPosCloseDate4Process.StartInfo = startInfo;
    oCallPosCloseDate4Process.Start();

    oCallPosCloseDate4Process.WaitForExit();
    /********* 调用STLD解析,生成小票程序 End ********/

    怎样让控制台程序在运行时不显示dos界面?

    处理方法:打开【项目属性】,找到【输出类型】,改为【windows应用程序】

  • 相关阅读:
    xsos:一个在Linux上阅读SOSReport的工具
    RHEL sosreport
    sosreport -a --report
    环境变量
    读研重要的是要明白你自己要干什么, 不能等导师来告诉你你应该干什么. 研究生的优势在于理论功底深厚, 思维具有穿透力,
    awk sed grep 常用命令
    如何删除文件中的空行
    Vim删除空行
    WPS 2010 页眉下方添加下划线
    Android开发环境搭建
  • 原文地址:https://www.cnblogs.com/Moonlight-Shadow/p/3626203.html
Copyright © 2020-2023  润新知