Ich habe ein ASP.NET-Projekt, das seine Protokolle an NLog sendet.Umleiten Sie alle ASP.NET Core-Protokollierung in einen einzigen NLog-Logger
Allerdings habe ich in diesem Projekt meinen eigenen NLog Logger und würde gerne wissen, wie man alle Logs durchleitet.
Ich denke, ich sollte NLog nicht als Logger hinzufügen, aber ich sollte einen Weg finden, eine Methode zu registrieren, die jedes Mal aufgerufen wird, wenn ASP versucht, etwas zu protokollieren.
Wie kann dies erreicht werden?
Dies ist der Code, den Logger erstellt:
// 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);
und dies ist auch, wie ASP.net angebracht wird, um nlog:
LoggerFactory.AddNLog();
Application.AddNLogWeb();
Nun ist das aktuelle Protokoll Layout sieht aus wie dies für zwei Prozesse (die Tiernamen ändern sich automatisch bei jedem Neustart des Prozesses)
so beide Prozesse: Shinobi und Mouserun haben hier ihre eigene Log-Ausgabe, aber alles, was mit ASP zu tun hat, geht an ASPs nlog-Instanz namens Microsoft, unabhängig vom Prozess.
Ziel ist es, die ASP-Ausgabe von Shinobi in den Shinobi-Logger und die Mouserun ASP-Ausgabe in den Mouserun-Logger gehen zu gehen.
nein, ich etwas wollte, das von der Microsoft geht Shinobi-Prozess, um zum Shinobi-Logger zu gehen und alles, was von Mouserun zu Microsoft geht, um zum Mouserun-Prozess zu gehen s. Ich möchte nicht, dass ASP auf nlog protokolliert, ich möchte, dass ASP mir einen Rückruf gibt, wenn er etwas protokollieren will, damit ich in den Prozess schreiben kann. Logger – Thomas
Hinzufügen, so dass es die Log4J XML-Ausgabe ist, die einen Logger-Namen enthält Du hast irgendwie alles konfiguriert. Das Dateiziel funktioniert einwandfrei. –
ja, die Dateiausgabe funktioniert gut, aber die UDP ist nicht – Thomas