1

こんにちは、ライブ Web サイトのログを書き込もうとしていますが、パスに問題があります。Server.MapPath メソッドを使用する必要がありますが、web.config で行う必要があります。

これについてどうすればいいですか?

ファイルの値はパスを保持しますが、Server.MapPath を設定する必要があります。

  <log4net>

<add key="LogFilePath1" value="../Logs/CurrentLog" id="FP1"/>
<add key="LogFilePath2" value="../Logs/CurrentLog.txt" id="FP2" />

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="../Logs/CurrentLog"/> 
  <appendToFile value="true"/>

  <rollingStyle value="Size"/>
  <maxSizeRollBackups value="10"/>
  <maximumFileSize value="10000"/>
  <staticLogFileName value="true"/>
  <filter type="log4net.Filter.LevelRangeFilter">
    <acceptOnMatch value="true"/>
    <levelMin value="INFO"/>
    <levelMax value="FATAL"/>
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5level %date [%thread] %-22.22c{1} - %m%n"/>
  </layout>
</appender>

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="../Logs/Log.txt"/>
  <appendToFile value="true"/>
  <layout type="log4net.Layout.PatternLayout">
    <header value="**"/>
    <footer value="**"/>
    <conversionPattern value="%newline%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG"/>
  <appender-ref ref="LogFileAppender"/>
  <appender-ref ref="ConsoleAppender"/>
  <appender-ref ref="RollingFileAppender"/>
</root>

<logger name="ConsoleApp.LoggingExample">
  <level value="ERROR"/>
  <appender-ref ref="EventLogAppender"/>
</logger>

ロガー コード C#:

public class Logger
    {
        protected static readonly ILog logger = LogManager.GetLogger(typeof(Logger));



        public void logError(string message, Exception ex)
        {
            HttpContext.Current.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["LogFilePath1"]));
            HttpContext.Current.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["LogFilePath2"]));
            log4net.Config.XmlConfigurator.Configure();
            logger.Error(message + ex);
        }


        public void logInfo(string message)
        {
            HttpContext.Current.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["LogFilePath1"]));
            HttpContext.Current.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["LogFilePath2"]));
            log4net.Config.XmlConfigurator.Configure();
            logger.Info(message);
        }

    }

C# コードを Server.MapPath キーに追加しました。ファイル値でキーを呼び出すのに苦労しています =

4

2 に答える 2

1

パスを次のように構成に保存します

<add key="LogFilePath1" value="~/Logs/CurrentLog" id="FP1"/>

コードからキーを読み取ります

string path = GetPath("LogFilePath1");
string fullPath = System.Web.HttpContext.Server.MapPath(path);
于 2012-11-19T09:34:17.453 に答える
0

Log4net は、構成ファイルからパスを読み取るときに Server.Map パスを使用しません。Web コンテキストで実行されていることはわかりません。ローリング ファイル アペンダーの独自のバージョンを実装し、構成からパスを取得する関数をオーバーライドできると思います。ただし、ログの場所への完全なパスを使用するだけです。通常、アプリケーションが実行されている別のディスクにログオンして、ディスク領域が不足してアプリケーションが強制終了されるのを防ぐ必要があります。

于 2012-11-19T10:37:48.940 に答える