在解决方案中的测试项目里作了下面的一些配置,但是日志却写不出来。在WEB应用程序中配置后可以正常写出
App_config:
<?xml version="1.0" encoding="utf-8"?>
<configuration> <configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections> <log4net debug="false">
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyy-MM-dd" />
<layout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="%date [%thread] %-5level %logger - %exception%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
<!--测试项目连接数据库的配置文件-->
<appSettings>
<add key="SqlConString" value="Data Source=192.168.1.***;Initial Catalog=Database;
                   User ID=***;pwd=***;Min Pool Size=10;Max Pool Size=100;" />
</appSettings>
</configuration>
预生成事件命令行:
copy /Y "$(ProjectDir)app.config" "$(TargetPath).config"
Assembly.cs文件添加内容:
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]
程序里的调用代码:
private static readonly log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");
log.Info("test");

解决方案 »

  1.   

    这样配看看  <log4net>
        <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          <param name="File" value="WoNext_Log.txt"/>
          <param name="AppendToFile" 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="%-5p %c [%x] - %m%n"/>
          </layout>
          <layout type="log4net.Layout.SimpleLayout"/>
        </appender>
        <root>
          <level value="ALL"/>
          <appender-ref ref="LogFileAppender"/>
        </root>
      </log4net>
      

  2.   

    那你测试的时候,根本没有加载这个log4net的配置文件吧?
    你用的是什么测试?你在单元测试启动的时候调用一下,加载一下log4net配置
          log4net.Config.XmlConfigurator.Configure();
      

  3.   

    我是这么调用的:
    Winform调用过程:
    1:在项目中引用log4net.dll
    2:app.config文件的<configuration></configuration>节点中加入 
     <log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
          <file value="Log\\" />
          <appendToFile value="true" />
          <datePattern value="yyyy-M-d.LOG" />
          <maxSizeRollBackups value="10" />
          <rollingStyle value="Date" />
          <maximumFileSize value="10MB" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss}  %c %m %n" />
          </layout>
        </appender>    <root>
          <level value="INFO" />
          <appender-ref ref="RollingLogFileAppender" />
        </root>  </log4net>
        
    3:在Form.cs文件中引入using log4net;命名空间,然后加入
    [assembly: log4net.Config.DOMConfigurator(Watch = true)] 
    在类里加入下面这句代码,然后就可调用。
      private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
      

  4.   

    问题好像是不能使用虚拟路径,写成绝对路径就能加载log4net啦
      

  5.   

    在Global.asax文件中添加下面代码
     void Application_Start(object sender, EventArgs e) 
        {
            // Code that runs on application startup
            log4net.Config.XmlConfigurator.Configure();     }   
      

  6.   

    呵呵。。原来碰到过
    如果布置在NAS存储服务器上的话,这里一定要用物理路径,如果是非NAS方式可以使用相对路径(如:~/WebLogs/Log.txt)