C# 在c中创建日志#

C# 在c中创建日志#,c#,.net,logging,cruisecontrol.net,C#,.net,Logging,Cruisecontrol.net,我使用log4net中的ILog对象在C#中创建日志。我正在传递两个参数1)存储库,它将在其中创建日志文件2)日志文件的名称,但它显示了一个异常,即未定义目录,如果我只传递日志文件的名称,程序将成功运行,但我无法找到日志文件 这是我的密码:- private void createLogger(string Logdirectory) { if (Directory.Exists(Logdirectory)) {

我使用log4net中的ILog对象在C#中创建日志。我正在传递两个参数1)存储库,它将在其中创建日志文件2)日志文件的名称,但它显示了一个异常,即未定义目录,如果我只传递日志文件的名称,程序将成功运行,但我无法找到日志文件

这是我的密码:-

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

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

            }
        } 
以下是控制台输出:-


请帮助我找到通过Ilog或除filestream之外的任何其他方法获取记录器的合适方法。

阅读文档,log4net是非常可配置的,文档记录良好

文件:

注意获取日志实例的方法的不同

  • 您要求的是当前类型的ILog,而不是文件名
  • 您正在告诉log4net从app.config/web.config读取配置设置
  • 根据您的配置,您可能需要使用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,但是数据库appender是存在的,其他类型可能适合您的需要。

    逐步查看代码以查看什么是LogFileName。此外,您可能正在将完整文件名路径与logdirectory连接起来,以字符串形式重复目录名,但这样做无法正常工作。LogManager.GetLogger(…)方法的字符串参数不指定日志文件名或目录。阅读Log4Net文档,了解这些字符串参数的用途。要将日志消息写入文件,需要设置所谓的FileAppender。请参阅Log4Net文档或有关此主题的博客文章/教程之一(如或)
    <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>