feat: Moves logger to a separate assembly for reuse (#2001)
This commit is contained in:
parent
333b40872a
commit
9d0d454b4e
8 changed files with 32 additions and 0 deletions
36
Projects/Logger/ILogger.cs
Normal file
36
Projects/Logger/ILogger.cs
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/*************************************************************************
|
||||
* ModernUO *
|
||||
* Copyright 2019-2023 - 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);
|
||||
}
|
||||
33
Projects/Logger/LogFactory.cs
Normal file
33
Projects/Logger/LogFactory.cs
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/*************************************************************************
|
||||
* ModernUO *
|
||||
* Copyright 2019-2023 - 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}"
|
||||
))
|
||||
#if DEBUG
|
||||
.MinimumLevel.Debug()
|
||||
#endif
|
||||
.CreateLogger();
|
||||
|
||||
public static ILogger GetLogger(Type declaringType) => new SerilogLogger(serilogLogger.ForContext(declaringType));
|
||||
}
|
||||
20
Projects/Logger/Logger.csproj
Normal file
20
Projects/Logger/Logger.csproj
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<RootNamespace>Server</RootNamespace>
|
||||
<AssemblyName>Logger</AssemblyName>
|
||||
<Product>ModernUO Logger</Product>
|
||||
<OutDir>..\..\Distribution\Assemblies</OutDir>
|
||||
<PublishDir>..\..\Distribution\Assemblies</PublishDir>
|
||||
<Configurations>Debug;Release;Analyze</Configurations>
|
||||
</PropertyGroup>
|
||||
<Target Name="CleanPub" AfterTargets="Clean">
|
||||
<Message Text="Application: Removing distribution files..."/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName)" ContinueOnError="true"/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).deps.json" ContinueOnError="true"/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).dll" ContinueOnError="true"/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).dll.config" ContinueOnError="true"/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).pdb" ContinueOnError="true"/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).runtimeconfig.dev.json" ContinueOnError="true"/>
|
||||
<Delete Files="..\..\Distribution\$(AssemblyName).runtimeconfig.json" ContinueOnError="true"/>
|
||||
</Target>
|
||||
</Project>
|
||||
67
Projects/Logger/SerilogLogger.cs
Normal file
67
Projects/Logger/SerilogLogger.cs
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
/*************************************************************************
|
||||
* ModernUO *
|
||||
* Copyright 2019-2023 - 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;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Server.Logging;
|
||||
|
||||
public class SerilogLogger : ILogger
|
||||
{
|
||||
private readonly Serilog.ILogger serilogLogger;
|
||||
|
||||
public SerilogLogger(Serilog.ILogger serilogLogger) =>
|
||||
this.serilogLogger = serilogLogger;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Debug(string message, params object[] args) =>
|
||||
serilogLogger.Debug(message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Debug(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Debug(exception, message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Information(string message, params object[] args) =>
|
||||
serilogLogger.Information(message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Information(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Information(exception, message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Warning(string message, params object[] args) =>
|
||||
serilogLogger.Warning(message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Warning(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Warning(exception, message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Error(string message, params object[] args) =>
|
||||
serilogLogger.Error(message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Error(Exception exception, string message, params object[] args) =>
|
||||
serilogLogger.Error(exception, message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public void Fatal(string message, params object[] args) =>
|
||||
serilogLogger.Fatal(message, args);
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
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