diff --git a/Projects/DLL/SystemX.Core.dll b/Projects/DLL/SystemX.Core.dll index 0fc5670..637fb5e 100644 Binary files a/Projects/DLL/SystemX.Core.dll and b/Projects/DLL/SystemX.Core.dll differ diff --git a/Projects/SystemX.Core/SystemX.Core/Log4net/Log4net.cs b/Projects/SystemX.Core/SystemX.Core/Log4net/Log4net.cs index dd165c3..0ddf274 100644 --- a/Projects/SystemX.Core/SystemX.Core/Log4net/Log4net.cs +++ b/Projects/SystemX.Core/SystemX.Core/Log4net/Log4net.cs @@ -19,6 +19,8 @@ public enum LogType Fatal = 4, //custom level + Exception = 7, + DB = 10, HTTP = 20, @@ -30,6 +32,7 @@ public enum LogType #region CustomLevel public static class Log4netCustomLevel { + public static readonly log4net.Core.Level EXCEPTION = new log4net.Core.Level(10007, LogType.Exception.ToString()); public static readonly log4net.Core.Level DB = new log4net.Core.Level(10010, LogType.DB.ToString()); public static readonly log4net.Core.Level HTTP = new log4net.Core.Level(10020, LogType.HTTP.ToString()); public static readonly log4net.Core.Level SOCKET = new log4net.Core.Level(10021, LogType.SOCKET.ToString()); @@ -37,6 +40,7 @@ public static class Log4netCustomLevel public static void SetCustomLevel(ILoggerRepository repo) { + repo.LevelMap.Add(EXCEPTION); repo.LevelMap.Add(DB); repo.LevelMap.Add(HTTP); repo.LevelMap.Add(SOCKET); @@ -53,7 +57,16 @@ public static class Log4net public static bool IsConfigLoad { get; set; } = false; + //로그 사용여부 + public static bool IsDebugEnabled { get; set; } = true; + public static bool IsDBEnabled { get; set; } = true; + public static bool IsHttpEnabled { get; set; } = true; + public static bool IsSocketEnabled { get; set; } = true; + public static bool IsControllerEnabled { get; set; } = true; + //자동삭제 + private static bool AutoRemove { get; set; } = false; + private static int AutoRemoveKeepingDay = 30; static Log4net() { @@ -61,13 +74,13 @@ public static class Log4net if (File.Exists(log4netConfigPath) == true) { - File.Delete(log4netConfigPath); - - Console.WriteLine($"Create log4netConfig: {log4netConfigPath}"); - File.WriteAllText(log4netConfigPath, Config); + File.Delete(log4netConfigPath); } - IsConfigLoad = OpenConfig(log4netConfigPath); + Console.WriteLine($"Create log4netConfig: {log4netConfigPath}"); + File.WriteAllText(log4netConfigPath, Config); + + IsConfigLoad = OpenConfig(log4netConfigPath); } private static bool OpenConfig(string path) @@ -94,7 +107,53 @@ public static class Log4net return result; } - public static void WriteLine(T log, LogType logType = LogType.Info) + public static void AutoRemoveLog(int autoRemoveKeepingDay = 30) + { + if (AutoRemove == false) + { + AutoRemove = true; + AutoRemoveKeepingDay = autoRemoveKeepingDay; + + string logDirectory = @$"{Path.GetDirectoryName(Environment.ProcessPath)}\log"; + Log4net.WriteLine($"Log4net Auto Remove: {AutoRemove}, Remove Day: -{AutoRemoveKeepingDay}", LogType.Warn); + Log4net.WriteLine($"Log4net Auto Path: {logDirectory}", LogType.Warn); + + Task.Run(async () => + { + //1분후 시작 + await Task.Delay(TimeSpan.FromMinutes(1)); + while (true) + { + var files = Directory.GetFiles(logDirectory, "*.log", SearchOption.AllDirectories); + foreach (var file in files) + { + var lastAccessDateTime = File.GetLastWriteTime(file); + if (lastAccessDateTime < DateTime.Now.AddDays(AutoRemoveKeepingDay * -1)) + { + try + { + //File.Delete(file); + WriteLine($"Remove log: {Path.GetFileName(file)}", LogType.Warn); + } + catch + { + WriteLine($"Using log file: {Path.GetFileName(file)}", LogType.Warn); + } + } + } + + //일정시간마다 반복 + Log4net.WriteLine($"Log Auto Remove Run", LogType.Warn); + await Task.Delay(TimeSpan.FromHours(12)); + } + }); + } + } + + public static void WriteLine(T log, LogType logType = LogType.Info, bool trace = false, + [System.Runtime.CompilerServices.CallerMemberName] string memberName = "", + [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "", + [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0) { if (IsConfigLoad == false) { @@ -103,78 +162,150 @@ public static class Log4net return; } + if(log is Exception ex) + { + WriteLineException(ex, memberName, sourceFilePath, sourceLineNumber); + return; + } + + string strTrace = $"TRACE::[{Path.GetFileName(sourceFilePath)}][Method:{memberName}][LINE:{sourceLineNumber}]"; + switch (logType) { case LogType.Info: { + if (trace == true) + { + Manager?.Info($"{strTrace}"); + } Manager?.Info(log); break; } case LogType.Warn: { + if (trace == true) + { + Manager?.Warn($"{strTrace}"); + } Manager?.Warn(log); break; } case LogType.Error: { + if (trace == true) + { + Manager?.Error($"{strTrace}"); + } Manager?.Error(log); break; } case LogType.Debug: - { - Manager?.Debug(log); + { + if (IsDebugEnabled == true) + { + if (trace == true) + { + Manager?.Debug($"{strTrace}"); + } + Manager?.Debug(log); + } break; } case LogType.Fatal: { + Manager?.Fatal($"{strTrace}"); Manager?.Fatal(log); break; } + case LogType.Exception: + { + Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; + if (t != null) + { + if (trace == true) + { + Manager?.Logger.Log(t, Log4netCustomLevel.EXCEPTION, $"{strTrace}", null); + } + Manager?.Logger.Log(t, Log4netCustomLevel.EXCEPTION, log, null); + } + break; + } case LogType.DB: { - Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; - if (t != null) + if(IsDBEnabled == true) { - Manager?.Logger.Log(t, Log4netCustomLevel.DB, log, null); - } + Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; + if (t != null) + { + if (trace == true) + { + Manager?.Logger.Log(t, Log4netCustomLevel.DB, $"{strTrace}", null); + } + Manager?.Logger.Log(t, Log4netCustomLevel.DB, log, null); + } + } break; } case LogType.HTTP: { - Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; - if (t != null) + if(IsHttpEnabled == true) { - Manager?.Logger.Log(t, Log4netCustomLevel.HTTP, log, null); - } + Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; + if (t != null) + { + if (trace == true) + { + Manager?.Logger.Log(t, Log4netCustomLevel.HTTP, $"{strTrace}", null); + } + Manager?.Logger.Log(t, Log4netCustomLevel.HTTP, log, null); + } + } break; } case LogType.SOCKET: { - Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; - if (t != null) + if(IsSocketEnabled == true) { - Manager?.Logger.Log(t, Log4netCustomLevel.SOCKET, log, null); + Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; + if (t != null) + { + if (trace == true) + { + Manager?.Logger.Log(t, Log4netCustomLevel.SOCKET, $"{strTrace}", null); + } + Manager?.Logger.Log(t, Log4netCustomLevel.SOCKET, log, null); + } } break; } case LogType.CONTROLLER: { - Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; - if (t != null) + if(IsControllerEnabled == true) { - Manager?.Logger.Log(t, Log4netCustomLevel.CONTROLLER, log, null); + Type? t = MethodBase.GetCurrentMethod()?.DeclaringType; + if (t != null) + { + if (trace == true) + { + Manager?.Logger.Log(t, Log4netCustomLevel.CONTROLLER, $"{strTrace}", null); + } + Manager?.Logger.Log(t, Log4netCustomLevel.CONTROLLER, log, null); + } } break; } } } - public static void WriteLine(Exception? ex) + private static void WriteLineException(Exception? ex, + [System.Runtime.CompilerServices.CallerMemberName] string memberName = "", + [System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "", + [System.Runtime.CompilerServices.CallerLineNumber] int sourceLineNumber = 0) { - WriteLine(ex?.Message, LogType.Error); + WriteLine($"TRACE::[{Path.GetFileName(sourceFilePath)}][Method:{memberName}][LINE:{sourceLineNumber}]", LogType.Exception); + WriteLine(ex?.Message, LogType.Exception); } - #region Config static string Config = @$" @@ -188,7 +319,7 @@ public static class Log4net - + @@ -212,6 +343,10 @@ public static class Log4net + + + + diff --git a/Projects/VPKI/VPKI/Config/log4net.config b/Projects/VPKI/VPKI/Config/log4net.config index e5b8ab4..b970851 100644 --- a/Projects/VPKI/VPKI/Config/log4net.config +++ b/Projects/VPKI/VPKI/Config/log4net.config @@ -10,7 +10,7 @@ - + @@ -34,6 +34,10 @@ + + + + diff --git a/Projects/VPKI/VPKI/VPKI.Library/Static/Document4net.cs b/Projects/VPKI/VPKI/VPKI.Library/Static/Document4net.cs index c61d339..a98c2c0 100644 --- a/Projects/VPKI/VPKI/VPKI.Library/Static/Document4net.cs +++ b/Projects/VPKI/VPKI/VPKI.Library/Static/Document4net.cs @@ -60,7 +60,7 @@ namespace VPKI.Library.Static } catch(Exception ex) { - Log4net.WriteLine("Document4net ExportToCsv Exception",LogType.Error); + Log4net.WriteLine("Document4net ExportToCsv Exception", LogType.Exception); Log4net.WriteLine(ex); } diff --git a/Projects/VPKI/VPKI/VPKI.Web.Api/Program.cs b/Projects/VPKI/VPKI/VPKI.Web.Api/Program.cs index bed3e60..f6d75fa 100644 --- a/Projects/VPKI/VPKI/VPKI.Web.Api/Program.cs +++ b/Projects/VPKI/VPKI/VPKI.Web.Api/Program.cs @@ -22,6 +22,7 @@ string configDir = @"../Config"; if (Log4net.IsConfigLoad == true) { Log4net.WriteLine("Log4net Init Success"); + Log4net.AutoRemoveLog(); } else { diff --git a/Projects/VPKI/VPKI/VPKI.Web.Api/Services/AuthService.cs b/Projects/VPKI/VPKI/VPKI.Web.Api/Services/AuthService.cs index d4fd0ff..638c7dd 100644 --- a/Projects/VPKI/VPKI/VPKI.Web.Api/Services/AuthService.cs +++ b/Projects/VPKI/VPKI/VPKI.Web.Api/Services/AuthService.cs @@ -163,7 +163,7 @@ namespace VPKI.Web.Api.Services } catch (Exception e) { - Log4net.WriteLine($"Select User Transaction Error", LogType.Error); + Log4net.WriteLine($"Select User Transaction Error", LogType.Exception); Log4net.WriteLine(e); } } diff --git a/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_02Service.cs b/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_02Service.cs index ba845df..f7b0d5a 100644 --- a/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_02Service.cs +++ b/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_02Service.cs @@ -189,7 +189,7 @@ namespace VPKI.Web.Api.Services } catch (Exception e) { - Log4net.WriteLine($"RequestCertificate Exception::{csr.CHashedTbscsr}", LogType.Error); + Log4net.WriteLine($"RequestCertificate Exception::{csr.CHashedTbscsr}", LogType.Exception); Log4net.WriteLine(e); } } diff --git a/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_20Service.cs b/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_20Service.cs index 155a49f..7167197 100644 --- a/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_20Service.cs +++ b/Projects/VPKI/VPKI/VPKI.Web.Api/Services/ISO15118_20Service.cs @@ -200,7 +200,7 @@ namespace VPKI.Web.Api.Services } catch (Exception e) { - Log4net.WriteLine($"RequestCertificate Exception::{csr.CHashedTbscsr}", LogType.Error); + Log4net.WriteLine($"RequestCertificate Exception::{csr.CHashedTbscsr}", LogType.Exception); Log4net.WriteLine(e); } } diff --git a/Projects/VPKI/VPKI/VPKI.Web.Client/Program.cs b/Projects/VPKI/VPKI/VPKI.Web.Client/Program.cs index 1b1995a..2a9d772 100644 --- a/Projects/VPKI/VPKI/VPKI.Web.Client/Program.cs +++ b/Projects/VPKI/VPKI/VPKI.Web.Client/Program.cs @@ -10,7 +10,8 @@ string configDir = @"../Config"; if (Log4net.IsConfigLoad == true) { - Log4net.WriteLine("Log4net Init Success"); + Log4net.WriteLine("Log4net Init Success"); + Log4net.AutoRemoveLog(); } else {