2015-08-15 118 views
2

我使用log4net中的ILog对象在C#中创建日志。我传递两个参数1)存储库在哪里它将创建日志文件2)日志文件的名称,但它显示异常,该目录没有定义,如果我只是通过传递日志文件的名称,程序运行成功,但我无法找到日志文件。在c#中创建日志#

这里是我的代码: -

private void createLogger(string Logdirectory) 
     { 
      if (Directory.Exists(Logdirectory)) 
      { 
       Log = LogManager.GetLogger(Logdirectory , LogFilename); 

      } 
      else 
      { 
       Log = LogManager.GetLogger(LogFilename); 

      } 
     } 

这里是控制台输出: -

enter image description here 帮我找得到记录器通过ILOG或通过任何其他方法,除了FILESTREAM的合适的方式

+0

单步执行代码以查看LogFileName是什么。另外,您可能会将完整的文件名路径与logdirectory连接起来,在字符串中重复目录名称 – codingbiz

+0

您的做法无法正常工作。 LogManager.GetLogger(...)方法的字符串参数不指定日志文件名称或目录。阅读Log4Net文档这些字符串参数的用途是什么。要将日志消息写入文件,您需要设置一个所谓的FileAppender。查看Log4Net文档或关于此主题的博客文章/教程之一(如[this one](https://codingsexy.wordpress.com/2013/07/07/log4net-code/)或[this one](http ://www.codeproject.com/Articles/140911/log-net-Tutorial)) – elgonzo

回答

0

阅读文档,log4net是非常易于配置和记录的。

文档:https://logging.apache.org/log4net/release/manual/configuration.html

using Com.Foo; // Import log4net classes. 
using log4net; 
using log4net.Config; 
public class MyApp 
{ // Define a static logger variable so that it references the // Logger instance named "MyApp". 
    private static readonly ILog log = LogManager.GetLogger(typeof(MyApp)); 
    static void Main(string[] args) 
    { // Set up a simple configuration that logs on the console. 
    BasicConfigurator.Configure(); 
    log.Info("Entering application."); 
    Bar bar = new Bar(); 
    bar.DoIt(); 
    log.Info("Exiting application."); 
} 
} 

中注意方法的不同为获得登录实例。

  1. 你问一个ILog的当前类型不是一个明确的文件名
  2. 你告诉log4net的,从在app.config/web.config中
  3. 根据您的配置读取配置设置您可能需要使用XmlConfigurator

的config文件的一个例子是:

<log4net> <!-- A1 is set to be a ConsoleAppender --> 
<appender name="A1" type="log4net.Appender.ConsoleAppender"> <!-- A1 uses PatternLayout --> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" /> 
    </layout> 
</appender> 
<!-- Set root logger level to DEBUG and its only appender to A1 --> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="A1" /> 
</root> 
</log4net> 

有很多Appender,上面是一个ConsoleAppender,但是一个DatabaseAppender存在,其他类型可能适合你。