プログラムで (ファイル パスは実行時に生成されるため)、SQL ステートメント用に別のログ ファイルを作成したいと考えています。私のコードは次のようになります
public static void InitializeLogger(FileInfo logFile, FileInfo sqlLogFile,
Level threshhold, string layout = PATTERN_LAYOUT, bool rolling = true)
{
var hierarchy = (Hierarchy)LogManager.GetRepository();
var appender = CreateAppender(true, layout, APPENDER_NAME, logFile, threshhold);
hierarchy.Root.AddAppender(appender);
var sqlAppender = CreateAppender(rolling, layout, SQL_APPENDER_NAME, sqlLogFile, Level.Info);
var sqlLogger = (Logger)LogManager.GetLogger(SQL_LOGGER_NAME).Logger;
sqlLogger.RemoveAllAppenders();
sqlLogger.AddAppender(sqlAppender);
sqlLogger.Level = Level.Info;
}
private static FileAppender CreateAppender(bool rolling, string layout, string appenderName, FileInfo fileInfo, Level threshhold)
{
FileAppender result;
if (rolling)
{
result = new RollingFileAppender
{
AppendToFile = true,
ImmediateFlush = true,
Name = appenderName,
Layout = new PatternLayout(layout),
Threshold = threshhold,
File = fileInfo.FullName,
RollingStyle = RollingFileAppender.RollingMode.Date,
StaticLogFileName = true
};
}
else
{
result = new FileAppender
{
AppendToFile = true,
ImmediateFlush = true,
Name = appenderName,
Layout = new PatternLayout(layout),
Threshold = threshhold,
File = fileInfo.FullName
};
}
result.ActivateOptions();
return result;
}
public static void LogSQL(this ILog logger, string sql)
{
var sqlLogger = LogManager.GetLogger(SQL_LOGGER_NAME);
sqlLogger.InfoFormat("Sql: {0}", sql);
}
問題は、LogSQL が両方のログ ファイルに記録されているように見えることです。助言がありますか?