我正在使用 log4net 中的 ILog 对象在 C# 中创建日志。我正在传递两个参数 1) 将在其中创建日志文件的存储库 2) 日志文件的名称但它显示未定义目录的异常,如果我通过仅传递日志文件的名称来执行此操作,程序将成功运行但我无法找到日志文件。
这是我的代码:-
private void createLogger(string Logdirectory)
{
if (Directory.Exists(Logdirectory))
{
Log = LogManager.GetLogger( Logdirectory , LogFilename);
}
else
{
Log = LogManager.GetLogger(LogFilename);
}
}
这是控制台输出:-
最佳答案
阅读文档,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.");
}
}
注意获取日志实例的方法的不同。
- 您要求的是当前类型的 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,但存在一个 DatabaseAppender 和其他可能适合您需要的类型。
关于c# - 在 C# 中创建日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027462/