ログをNLogに送信するASP.NETプロジェクトがあります。すべてのASP.NETコアロギングを単一のNLogロガーにリダイレクト
しかし、このプロジェクトでは、私自身のNLogロガーを持っており、すべてのログをどのようにルーティングするかを知りたいと思います。
NLogをロガーとして追加するべきではないと思いますが、ASPが何かを記録しようとするたびに呼び出されるメソッドを登録する方法を見つけるべきです。
これはどのように達成できますか?
これはロガーを作成するコードです:
// create the module name
var ProcessName = Process.GetCurrentProcess().ProcessName;
_ModuleName = ProcessName + " (\"" + Oracle.GuessMyName() + "\")";
// create the logger configuration
var Configuration = new LoggingConfiguration();
// create the file target
var FileTarget = new FileTarget ("file")
{
FileName = @"x:\Logs\${processname}.log",
ArchiveFileName = @"x:\Logs\${processname}.{#}.log",
Layout = @"${longdate}|${logger}|${level}|${message}${onexception:|Exception occurred:${exception:format=tostring}${newline}",
ArchiveEvery = FileArchivePeriod.Day,
ArchiveNumbering = ArchiveNumberingMode.Rolling,
MaxArchiveFiles = 7,
ConcurrentWrites = true
};
Configuration.AddTarget(FileTarget);
// create the viewer target
var ViewerTarget = new NLogViewerTarget ("viewer")
{
Layout = @"${message}${onexception:${newline} --> Exception occurred\:${exception:format=tostring}",
IncludeSourceInfo = true,
IncludeCallSite = true,
Address = @"udp://127.0.0.1:9999"
};
Configuration.AddTarget(ViewerTarget);
// set the rules
Configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Info, FileTarget));
Configuration.LoggingRules.Add(new LoggingRule("*", LogLevel.Info, ViewerTarget));
// set the configuration
LogManager.Configuration = Configuration;
// create a new logger
_Logger = LogManager.GetLogger(_ModuleName);
これはASP.netがnlogに添付されますどのようにもある:
LoggerFactory.AddNLog();
Application.AddNLogWeb();
は、今現在のログのレイアウトは次のようになりますこれは2つのプロセス(動物の名前はプロセスが再起動されるたびに自動的に変更されます)
両方のプロセス:ここではshinobiとmouserunは独自のログ出力を持っていますが、ASPに関係するものは、プロセスに関係なく、MicrosoftというASPのnlogインスタンスに送られます。
目標は、shinobiのloggerに行くshinobiのASP出力とmouserunのloggerに入るmouserun ASPの出力を持つことです。あなたはまた、カスタム・ターゲットを作成し、NLog規則を使用して、このターゲットにすべての非グローバル・ロガーメッセージをリダイレクトすることができ
いいえ、私はからMicrosoftに行く何かを望んでいましたShinobiのプロセスはShinobiのロガーに行くとMouserunからMouserun procesに行くためにMicrosoftに行くものs。 ASPがnlogにログを記録しないようにするために、私はプロセスにログを書き込めるようにするためにASPにコールバックを与えます。 – Thomas
これを追加すると、log4J XML出力にlogger-nameあなたは何とか周りにすべてを構成しました。ファイルターゲットは正常に動作しています。 –
はい、ファイルの出力は正常ですが、UDPは – Thomas