15

Log4Netライブラリの使用を開始したばかりで、構成に問題があります。特別なことは何も必要ありません。Winformsアプリケーションに使用しており、基本的なファイルとコンソールのログが必要です。できるだけ単純にするために、構成にはApp.configを使用し、Log4NetプロジェクトのWebサイトから取得したデフォルト値を使用しています。App.config:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ProjectFolder" value="D:\Documents\my documents\Themis\Projects"/>
  </appSettings>
  <configSections>
    <section name="log4net"
       type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="ThemisLog.txt" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header]\r\n" />
        <param name="Footer" value="[Footer]\r\n" />
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="[Header]\r\n" />
        <param name="Footer" value="[Footer]\r\n" />
        <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
      </layout>
    </appender>

    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

プログラムクラス:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using log4net;
using log4net.Config;

[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Themis
{
    static class Program
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Program));

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

            log.Debug("Enter application");
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new OldFrmMain());
            log.Debug("Exit application");
        }
    }
}

ログファイルが作成され、ログが作成されますが、コンソールログは発生しません。

4

6 に答える 6

40

あなたが望むのは、しかしではありませConsoleAppenderTraceAppender

名前がわかりにくいかもしれませんが、TraceAppender は Visual Studio の [出力] ウィンドウに書き込みます。

サンプル:

<log4net>
  <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%d [%t] %-5p %c %m%n"/>
    </layout>
  </appender>

  <root>
    <level value="ALL"/>
    <appender-ref ref="TraceAppender"/>
  </root>
</log4net>
于 2013-03-11T08:11:18.623 に答える
4

Log4net は従来の Console.WriteLine(…) メソッドを使用してコンソールにメッセージを送信していると思います。デフォルトでは Console.WriteLine(…) は WinForms アプリケーションでは何もしないため、WinForms アプリケーションでは機能しません。

アプリケーションの開始時に Win32 API 関数 AllocConsole を呼び出してみてください。WinForms アプリケーション用のコンソールを作成し、Console.WriteLine(…) 関数を有効にする必要があります。ここでは、AllocConsole を呼び出す方法を示すコードの例を見つけることができます。 Windows アプリケーションでコンソール ウィンドウを開く方法

于 2011-04-23T14:58:07.657 に答える
1

OutputDebugStringAppenderSysinternals DebugViewと組み合わせて使用​​してみてください。 これは、WinForms アプリケーションでコンソール ウィンドウを開く代わりに使用できます。

于 2011-04-24T19:45:57.620 に答える
0

設定ファイルを少し変更することをお勧めします。まず、ConsoleAppender のヘッダーとフッターのエントリを使用する必要があるかどうかわかりません。次に、param= text も必要ないと思います。これらのいずれかが必ずしも間違っていると言っているわけではありませんが、ConsoleAppender をできるだけシンプルにできるかどうか見てみましょう。LayoutPattern タグ内の唯一の行として、次の行を試してください。

<conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>

私は過去に自分で使用したことがあるので、その行が機能することを知っています. それだけで動作するかどうか教えてください。

各セクションとその機能について詳しく説明している記事を次に示します: http://www.codeproject.com/KB/dotnet/Log4net_Tutorial.aspx

于 2011-05-03T16:30:14.597 に答える
0
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

大文字と小文字が区別されます!!

log4net: 構成ファイル [..\Log4Net.config] が見つかりません。構成は変更されていません。

于 2015-03-13T21:41:49.317 に答える