私はlog4netに奇妙な問題があります。外部設定ファイルからlog4netが設定されていません
ASP.NETアプリケーションでは、外部からlog4netを設定したいので、Webアプリケーションに属するAssemblyInfo.csファイルに、この行のWebアプリケーションに接続する別のlog4net.configファイルがあります。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
私はlog4netのロガークラスをインスタンス化した場合さて、このような通常の方法:
public class MyClass
{
private static readonly ILog _logger = log4net.LogManager.GetLogger(typeof(MyClass));
....
はその後、この作品、およびロギングは通常通り動作します。しかし、別のアセンブリ(インフラストラクチャ)の一部であるLogManagerクラスにログコードをラップし、多数のプロジェクトで再利用しています。
public static class LogManager
{
public static ILog GetLogger()
{
var stack = new StackTrace();
var frame = stack.GetFrame(1);
return new log4net.LogManager.GetLogger(frame.GetMethod().DeclaringType);
}
}
だから私は私のasp.netのコードでこれを使用することができます:それはこのようになりますのgetLoggerあり
public class MyClass
{
private static readonly ILog _logger = LogManager.GetLogger();
....
をしかし...これは動作しません!ロギングは生成されません。設定ファイルを正しくフックアップするようには見えません。 log4netの設定をweb.configに直接入れると、このLogManagerは正常に動作します。
Log4Netは、現在実行中のアセンブリで最初にプロードされたときにアセンブリ属性をスキャンしているため、そのアトリビュートがそのアセンブリで定義されていない場合、期待どおりにセットアップされませんか? –
これはEbenのレスポンスに関連している可能性があります。 –