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\trunk\src\HSRailwayStores20111128\PosCloseDate4\bin\Debug\PosCloseDate4.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应用程序】

 

转载于:https://www.cnblogs.com/Moonlight-Shadow/p/3626203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值