Sic.Framework/MECF.Framework.Common/Aitex/Core/RT/Log/LOG.cs

83 lines
3.0 KiB
C#

using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace Aitex.Core.RT.Log
{
public static class LOG
{
public static ICommonLog InnerLogger { private get; set; }
public static void Info(string message, bool isTraceOn = false, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
if (InnerLogger != null)
{
InnerLogger.Info(message, isTraceOn, GetFormatStackFrameInfo(traceLevel));
}
}
private static string GetFormatStackFrameInfo(int traceLevel)
{
StackFrame frame = new StackTrace(fNeedFileInfo: true).GetFrame(traceLevel + 1);
string fileName = frame.GetFileName();
string arg = (string.IsNullOrEmpty(fileName) ? "" : fileName.Substring(fileName.LastIndexOf('\\') + 1));
return $"{arg}\tLine {frame.GetFileLineNumber()}\t{frame.GetMethod().Name}()";
}
public static void Warning(string message, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
if (InnerLogger != null)
{
InnerLogger.Warning(message, GetFormatStackFrameInfo(traceLevel));
}
}
public static void Warning(string message, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0, params object[] args)
{
if (InnerLogger != null)
{
InnerLogger.Warning(string.Format(message, args), GetFormatStackFrameInfo(traceLevel));
}
}
public static void Error(string message, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
if (InnerLogger != null)
{
InnerLogger.Error(message, GetFormatStackFrameInfo(traceLevel));
}
}
public static void Warning(string message, Exception ex, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
if (InnerLogger != null)
{
InnerLogger.Warning(message, ex, GetFormatStackFrameInfo(traceLevel));
}
}
public static void Error(string message, Exception ex, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
if (InnerLogger != null)
{
InnerLogger.Error(message, ex, GetFormatStackFrameInfo(traceLevel));
}
}
public static void Write(Exception ex, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
Error("", ex, traceLevel + 1);
}
public static void Write(Exception ex, string message, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
Error(message, ex, traceLevel + 1);
}
public static void Write(string message, int traceLevel = 2, [CallerFilePath] string file = "", [CallerMemberName] string member = "", [CallerLineNumber] int line = 0)
{
Info(message, isTraceOn: false, traceLevel + 1);
}
}
}