2017-12-04 29 views
0

私は私のプロジェクトでlog4net.configと呼ばれるAAのファイルを作成し、以下の設定を追加しました:その後log4netのは、ファイルまたはコンソール(外部log4net.configファイル)をログに記録するログ記録されていない

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> 
    </configSections> 
    <log4net> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="console" /> 
     <appender-ref ref="RollingFileAppender" /> 
    </root> 
    <appender name="console" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %level %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="${LOCALAPPDATA}\MyApp\LogFile.log" /> 
     <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="%-5level [%d{yyyy-MM-dd hh:mm:ss}] [%thread] (Line:%line) %M: - %m%n" /> 
     </layout> 
    </appender> 
    </log4net> 
</configuration> 

を、私はに以下の行を追加しました私AssemblyInfo.csファイル:アプリケーションで

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

、私は次の静的クラスを持っている:

public static class Logger 
    { 
     private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 


     public static void LogInfo(string msg) 
     { 
      log.Info(msg); 
     } 

     public static void LogDebug(string msg) 
     { 
      log.Debug(msg); 
     } 

     public static void LogWarn(string msg, Exception e) 
     { 
      log.Warn(msg, e); 
     } 

     public static void LogError(string msg, Exception e) 
     { 
      log.Error(msg, e); 
     } 
    } 

は、それから私はしかし、私はそれに作成されるか、または書き込まれているすべてのログファイルを見ることができませんLogger.LogDebug("Error logger working.");

を使用して、別のクラスのどこかのアプリケーションにログインしようとしています。私は間違って何をしていますか?

UPDATE:あなたはlog4netのロギング設定にlog4netの設定を持っている場合

...

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 
+0

ACLの問題を取り除き、$ {LOCALAPPDATA} \ ...をC:\ TEMP \ LogFile.logに変更し、それが機能するかどうか確認してください。 – lloyd

+0

@lloydは変更後もまだ動作していません。 – swdon

+0

おそらくlog4netを削除して、一度に各設定要素を追加してください。 – lloyd

答えて

1

を私もapp.configファイルに次を追加しましたが、私は私の出力コンソール上ですべて何も見えませんweb.config(設定タグとセクション)の設定を追加する必要はありません。 log4netタグを追加するだけです:

<log4net> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="RollingFileAppender" /> 
</root> 
<appender name="console" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date %level %logger - %message%newline" /> 
    </layout> 
</appender> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="${LOCALAPPDATA}\MyApp\LogFile.log" /> 
    <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="%-5level [%d{yyyy-MM-dd hh:mm:ss}] [%thread] (Line:%line) %M: - %m%n" /> 
    </layout> 
</appender> 
</log4net> 
+0

**設定を追加する必要はありません**ただし、問題があれば問題ありません。 – sgmoore

-1

私は間違いを再現できませんでした。 AssemblyInfoでlog4netを設定するとうまく動作します。おそらく設定上の問題です。私はあなたに別の実装

private static readonly ILog log = LogManager.GetLogger("myLogger"); 
    private static string configFile = "log4net.config"; 
    static Logger() 
    { 
     XmlConfigurator.Configure(new FileInfo(configFile)); 
    } 

log4net.config表示してみましょう:

<log4net> 
<logger name="myLogger"> 
    <level value="ALL" /> 
    <appender-ref ref="console" /> 
    <appender-ref ref="RollingFileAppender" /> 
</logger> 
<appender name="console" type="log4net.Appender.ConsoleAppender"> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date %level %logger - %message%newline" /> 
    </layout> 
</appender> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <param name="File" value="${LOCALAPPDATA}\MyApp\LogFile.log" /> 
    <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="%-5level [%d{yyyy-MM-dd hh:mm:ss}] [%thread] (Line:%line) %M: - %m%n" /> 
    </layout> 
</appender> 
</log4net> 
+0

これはlog4netを構成する唯一の方法ではなく、log4netアセンブリ属性を使用しているのでOPには必要ないはずです(https://logging.apache.org/を参照)。 log4net/release/manual/configuration.html#attributes)。 – sgmoore

+0

@sgmooreは非常に感謝しています。設定に関する作者のメッセージがありませんでした。 –

0

はstuartdさんのコメントに問題のおかげを見つけることができました。私の問題は、私の完全な解決策は2つのプロジェクトがあったことでした。私はlog4netのための1つのプロジェクト(これはスタートアッププロジェクトではありません)だけを構成しました。

私の元のlog4net構成に間違いはありませんでした。私は単に私のスタートアッププロジェクトにlog4netのリファレンスを追加し、log4netの設定をそのプロジェクトに追加してログを記録し始めました。

私の設定をテストした皆さんに感謝します。

関連する問題