1

タイトルの通り、Log4Net が動かない。ログ ファイルは (CSV として) 作成されますが、イベントはログ ファイルに記録されません。これは Windows サービスで動作していましたが、コードをシステム トレイ アプリケーションに移動すると、ログが機能しなくなりました。私はアイデアが不足しており、いくつかの提案を使用できます...

システム トレイ アプリのメイン プログラムは次のとおりです。Main メソッドで Log4Net を構成します。

    static class Program
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(HostSwitcher.Program));

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            log4net.Config.XmlConfigurator.Configure();

            if (!SingleInstance.Start()) { return; }
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            try
            {
                var applicationContext = new CustomApplicationContext();

                Application.Run(applicationContext);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Program Terminated Unexpectedly",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            SingleInstance.Stop();

        }

    }

ここに私のapp.configファイルがあります:

      <?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add
            name="textWriterTraceListener"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="C:\temp\log4net.txt" />
      </listeners>
    </trace>
  </system.diagnostics>
  <log4net>
    <root>
      <level value="DEBUG"/>
      <appender-ref ref="CsvFileAppender"/>
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
      <param name="File" value="C:\temp\emotiv_log.txt"/>
      <param name="AppendToFile" value="true"/>
      <rollingStyle value="Size"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="10MB"/>
      <staticLogFileName value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n"/>
      </layout>
    </appender>
    <appender name="CsvFileAppender" type="log4net.Appender.FileAppender">
      <!--<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />-->

      <file type="log4net.Util.PatternString" value="C:\\logs\\emotiv_log.csv"></file>
      <appendToFile value="true"/>
      <layout type="DataMindLoggerService.CsvPatternLayout, DataMindLoggerService">
        <header value="DateTime,ElapsedTime,Level,UserId,Action,Value&#13;&#10;" />
        <conversionPattern value="%date{M/d/yyyy H:mm:ss.fff}%newfield%property{ElapsedTime}%newfield%level%newfield%property{UserId}%newfield%property{Action}%newfield%property{Value}%endrow" />
      </layout>
    </appender>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

私の AssemblyInfo ファイルには、次のものがあります。

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

そして、ログ ファイルに書き込んでいる各クラスの先頭には、次の情報があります。

protected static readonly ILog log = LogManager.GetLogger(typeof(SomeNamespace.SomeClass));

さらに、app.config ファイルを右クリックして、[新しい場合はコピー]、[常にコピー]、[コピーしない場合はコピー] でコンパイルしようとしましたが、上記のいずれも問題ではないようです。

助言がありますか。これまでのところ、これがWindowsサービスで機能していて、システムトレイアプリで機能しなくなったことだけが明らかです。しかし、私はアイデアがありません - 提案はありますか?

ありがとう。

4

0 に答える 0