feat(logging): Adds support for Serilog (#573)
Example:
```cs
public class SomeClass
{
private static ILogger _logger;
private static Logger => _logger ??= LogFactory.GetLogger(typeof(SomeClass));
...
}
```
This commit is contained in:
parent
5e1ec5416d
commit
3a619e0103
29 changed files with 347 additions and 176 deletions
37
Projects/Server/Logging/ILogger.cs
Normal file
37
Projects/Server/Logging/ILogger.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
/*************************************************************************
|
||||
* ModernUO *
|
||||
* Copyright 2019-2021 - ModernUO Development Team *
|
||||
* Email: hi@modernuo.com *
|
||||
* File: ILogger.cs *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation, either version 3 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
*************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
namespace Server.Logging
|
||||
{
|
||||
public interface ILogger
|
||||
{
|
||||
void Debug(string message, params object[] args);
|
||||
void Debug(Exception exception, string message, params object[] args);
|
||||
|
||||
void Information(string message, params object[] args);
|
||||
void Information(Exception exception, string message, params object[] args);
|
||||
|
||||
void Warning(string message, params object[] args);
|
||||
void Warning(Exception exception, string message, params object[] args);
|
||||
|
||||
void Error(string message, params object[] args);
|
||||
void Error(Exception exception, string message, params object[] args);
|
||||
|
||||
void Fatal(string message, params object[] args);
|
||||
void Fatal(Exception exception, string message, params object[] args);
|
||||
}
|
||||
}
|
||||
31
Projects/Server/Logging/LogFactory.cs
Normal file
31
Projects/Server/Logging/LogFactory.cs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*************************************************************************
|
||||
* ModernUO *
|
||||
* Copyright 2019-2021 - ModernUO Development Team *
|
||||
* Email: hi@modernuo.com *
|
||||
* File: LogFactory.cs *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation, either version 3 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
*************************************************************************/
|
||||
|
||||
using System;
|
||||
using Serilog;
|
||||
|
||||
namespace Server.Logging
|
||||
{
|
||||
public static class LogFactory
|
||||
{
|
||||
private static readonly Serilog.ILogger serilogLogger = new LoggerConfiguration()
|
||||
.WriteTo.Async(a => a.Console(
|
||||
outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} <s:{SourceContext}>{NewLine}{Exception}"
|
||||
))
|
||||
.CreateLogger();
|
||||
|
||||
public static ILogger GetLogger(Type declaringType) => new SerilogLogger(serilogLogger.ForContext(declaringType));
|
||||
}
|
||||
}
|
||||
57
Projects/Server/Logging/SerilogLogger.cs
Normal file
57
Projects/Server/Logging/SerilogLogger.cs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
/*************************************************************************
|
||||
* ModernUO *
|
||||
* Copyright 2019-2021 - ModernUO Development Team *
|
||||
* Email: hi@modernuo.com *
|
||||
* File: SerilogLogger.cs *
|
||||
* *
|
||||
* This program is free software: you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation, either version 3 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||
*************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
namespace Server.Logging
|
||||
{
|
||||
public class SerilogLogger : ILogger
|
||||
{
|
||||
private readonly Serilog.ILogger serilogLogger;
|
||||
|
||||
public SerilogLogger(Serilog.ILogger serilogLogger) =>
|
||||
this.serilogLogger = serilogLogger;
|
||||
|
||||
public void Debug(string message, params object[] args) =>
|
||||
serilogLogger.Debug(message, args);
|
||||
|
||||
public void Debug(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Debug(exception, message, args);
|
||||
|
||||
public void Information(string message, params object[] args) =>
|
||||
serilogLogger.Information(message, args);
|
||||
|
||||
public void Information(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Information(exception, message, args);
|
||||
|
||||
public void Warning(string message, params object[] args) =>
|
||||
serilogLogger.Warning(message, args);
|
||||
|
||||
public void Warning(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Information(exception, message, args);
|
||||
|
||||
public void Error(string message, params object[] args) =>
|
||||
serilogLogger.Error(message, args);
|
||||
|
||||
public void Error(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Error(exception, message, args);
|
||||
|
||||
public void Fatal(string message, params object[] args) =>
|
||||
serilogLogger.Fatal(message, args);
|
||||
|
||||
public void Fatal(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Fatal(exception, message, args);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue