gpt4 book ai didi

c# - 如何在代码中而不是在 xml 文件中使用 log4net 配置 NHibernate 日志记录?

转载 作者:行者123 更新时间:2023-11-30 21:08:05 25 4
gpt4 key购买 nike

依赖于此文档 http://nhibernate.info/doc/howto/various/configure-log4net-for-use-with-nhibernate.html使用 XML 配置文件通过 log4net 配置 NHibernate 日志记录非常容易。

但我需要在 C# 代码中做同样的事情。

最佳答案

此答案基于 How to configure log4net programmatically from scratch (no config) .但是,由于该答案仅提供了针对根记录器的解决方案,因此我对其进行了一些扩展。

/// <summary>
/// Test for Log4Net
/// </summary>
public static void TestLog4Net()
{
// Configures log4net
ConfigureLog4net();
ILog log = LogManager.GetLogger("foo");
log.Debug("This should not appear in a logfile!");

ILog log2 = LogManager.GetLogger("NHibernate.SQL");
log2.Debug("This should only appear in the NH logfile!");

ILog log3 = LogManager.GetLogger("MyProgram");
log3.Debug("This should appear in the main program logfile!");
}

/// <summary>
/// Configures log4net
/// </summary>
public static void ConfigureLog4net()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
// Remove any other appenders
hierarchy.Root.RemoveAllAppenders();
// define some basic settings for the root
Logger rootLogger = hierarchy.Root;
rootLogger.Level = Level.Debug;

// declare a RollingFileAppender with 5MB per file and max. 10 files
RollingFileAppender appenderNH = new RollingFileAppender();
appenderNH.Name = "RollingLogFileAppenderNHibernate";
appenderNH.AppendToFile = true;
appenderNH.MaximumFileSize = "5MB";
appenderNH.MaxSizeRollBackups = 10;
appenderNH.RollingStyle = RollingFileAppender.RollingMode.Size;
appenderNH.StaticLogFileName = true;
appenderNH.LockingModel = new FileAppender.MinimalLock();
appenderNH.File = "log-nhibernate.log";
appenderNH.Layout = new PatternLayout("%date - %message%newline");
// this activates the FileAppender (without it, nothing would be written)
appenderNH.ActivateOptions();

// This is required, so that we can access the Logger by using
// LogManager.GetLogger("NHibernate.SQL") and it can used by NHibernate
Logger loggerNH = hierarchy.GetLogger("NHibernate.SQL") as Logger;
loggerNH.Level = Level.Debug;
loggerNH.AddAppender(appenderNH);

// declare RollingFileAppender with 5MB per file and max. 10 files
RollingFileAppender appenderMain = new RollingFileAppender();
appenderMain.Name = "RollingLogFileAppenderMyProgram";
appenderMain.AppendToFile = true;
appenderMain.MaximumFileSize = "5MB";
appenderMain.MaxSizeRollBackups = 10;
appenderMain.RollingStyle = RollingFileAppender.RollingMode.Size;
appenderMain.StaticLogFileName = true;
appenderMain.LockingModel = new FileAppender.MinimalLock();
appenderMain.File = "log-MyProgram.log";
appenderMain.Layout = new PatternLayout(
"%date [%thread] %-5level %logger [%ndc] - %message%newline");
// this activates the FileAppender (without it, nothing would be written)
appenderMain.ActivateOptions();

// This is required, so that we can access the Logger by using
// LogManager.GetLogger("MyProgram")
Logger logger = hierarchy.GetLogger("MyProgram") as Logger;
logger.Level = Level.Debug;
logger.AddAppender(appenderMain);

// this is required to tell log4net that we're done
// with the configuration, so the logging can start
hierarchy.Configured = true;
}

关于c# - 如何在代码中而不是在 xml 文件中使用 log4net 配置 NHibernate 日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9903894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com