c# - 在 C# 中创建日志

标签 c# .net logging cruisecontrol.net

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

这是我的代码:-

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

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

            }
        } 

这是控制台输出:-

enter image description here 帮我找到合适的方法来通过 Ilog 或除文件流之外的任何其他方法获取记录器

最佳答案

阅读文档,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 和其他可能适合您需要的类型。

关于c# - 在 C# 中创建日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027462/

相关文章:

java - 如何使用 org.apache.commons.logging 记录到一个文件?

c# - 如何通过 rs232 与秤通信

c# - 自定义枚举作为可选参数

c# - 为什么访问修饰符在 unity3D 中不重要

Python:如何进行惰性调试日志记录

python - 如何在 python Flask-tornado 应用程序中管理多个记录器

c# - 如何在基类中封装一个属性?

c# - 什么时候适合使用错误代码?

c# - Graphics.Transform 效率极低,我该怎么办?

c# - UCanAccess、IKVM 和 C#