1

asp.net サイトでエンタープライズ ライブラリ 5.0 のログを使用しています。ファイルは次
web.configとおりです。

<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true"/>
    </configSections>
    <loggingConfiguration name="FlatFileLogging" tracingEnabled="true"
        defaultCategory="General">
        <listeners>
            <add name="Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                fileName="C:\Logs\2013-06-28 14-21-53.log" header="" footer=""
                formatter="Text Formatter" traceOutputOptions="DateTime" />
        </listeners>
        <formatters>
            <add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                template="{timestamp}, {severity}, {message}" name="Text Formatter" />
        </formatters>
        <categorySources>
            <add switchValue="All" name="General">
                <listeners>
                    <add name="Flat File Trace Listener" />
                </listeners>
            </add>
        </categorySources>
        <specialSources>
            <allEvents switchValue="All" name="All Events" />
            <notProcessed switchValue="All" name="Unprocessed Category" />
            <errors switchValue="All" name="Logging Errors &amp; Warnings">
                <listeners>
                    <add name="Flat File Trace Listener" />
                </listeners>
            </errors>
        </specialSources>
    </loggingConfiguration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
        <compilation debug="true" targetFramework="4.0">
        </compilation>
        <authentication mode="Windows"/>
        <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/></system.web>
</configuration>

次の関数を使用してログ ファイルのパスを変更しています。

public static void SetLogFilePath(string filePath)
{
    //string logdirectory = AppDomain.CurrentDomain.BaseDirectory + "Logs\\";
    //if (!Directory.Exists(logdirectory))
    //    Directory.CreateDirectory(logdirectory);
    //logFilePath = logdirectory + (string.IsNullOrWhiteSpace(txtBatchName.Text) ? "" : (txtBatchName.Text + " ")) + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".log";

    if (!File.Exists(filePath))
        File.Create(filePath);

    ConfigurationFileMap objConfigPath = new ConfigurationFileMap();

    // App config file path.
    string appPath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
    objConfigPath.MachineConfigFilename = appPath;

    Configuration entLibConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");

    LoggingSettings loggingSettings = (LoggingSettings)entLibConfig.GetSection(LoggingSettings.SectionName);

    TraceListenerData traceListenerData = loggingSettings.TraceListeners.Get("Flat File Trace Listener");
    FlatFileTraceListenerData objFlatFileTraceListenerData = traceListenerData as FlatFileTraceListenerData;

    objFlatFileTraceListenerData.FileName = filePath;

    entLibConfig.Save();
}

ログ ファイル パスを変更してログ メッセージをファイルに送信すると、ログは新しく作成されたファイルに移動しません。ログ メッセージは、以前に設定したファイル パスに移動します。新しい設定がすぐに反映されないようです。

string path = "C:\\Logs\\" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".log";
SetLogFilePath(path);
Logger.Write(message, "General", 1, 0, System.Diagnostics.TraceEventType.Information); 

新しい設定をすぐにコードに更新する方法は?

4

1 に答える 1