C#-Log4net 패키지 log 클래스 및 사용자 정의 log 저장 경로
10665 단어 C#
인터페이스 클래스: Ilogger.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HCCD.Base.Comm.NewLogger
{
///
///
///
public interface ILogger
{
///
///
///
///
void Debug(string msg);
///
///
///
///
///
void Debug(string msg, Exception ex);
///
///
///
///
void Info(string msg);
///
///
///
///
///
void Info(string msg, Exception ex);
///
///
///
///
void Warn(string msg);
///
///
///
///
///
void Warn(string msg, Exception ex);
///
///
///
///
void Error(string msg);
///
///
///
///
///
void Error(string msg, Exception ex);
///
///
///
///
void Fatal(string msg);
///
///
///
///
///
void Fatal(string msg, Exception ex);
}
}
인터페이스 구현 클래스: LogHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using log4net.Appender;
using System.IO;
using log4net.Config;
namespace HCCD.Base.Comm.NewLogger
{
/*
* Author: Long
* Date: 2019-09
* Detail: Log4net
*/
///
/// Log4net
///
public class LogHelper : ILogger
{
private Dictionary LogDic = new Dictionary();
private object _islock = new object();
private string fileName = string.Empty;
///
///
///
/// [ , Logger ;]
/// [ , :Default]
public LogHelper(string fileSavePath, string fileName,string logSuffix = ".log")
{
try
{
Init();
if (string.IsNullOrEmpty(fileSavePath))
fileSavePath = "Logger";
if (string.IsNullOrEmpty(fileName))
fileName = "Default";
this.fileName = fileName;
var repository = LogManager.GetRepository();
var appenders = repository.GetAppenders();
if (appenders.Length == 0) return;
var targetApder = appenders.First(p => p.Name == "FileInfoAppender") as RollingFileAppender;
targetApder.File = Path.Combine(fileSavePath, this.fileName + logSuffix);
targetApder.ActivateOptions();
}
catch (Exception ex) { }
}
///
///
///
///
///
private ILog GetLog(string name)
{
try
{
if (LogDic == null)
{
LogDic = new Dictionary();
}
lock (_islock)
{
if (!LogDic.ContainsKey(name))
{
LogDic.Add(name, LogManager.GetLogger(name));
}
}
return LogDic[name];
}
catch
{
return LogManager.GetLogger("Default");
}
}
///
///
///
private void Init()
{
var file = new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log4net.config"));
XmlConfigurator.Configure(file);
}
///
///
///
///
public void Debug(string msg)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Debug(msg);
}
///
///
///
///
///
public void Debug(string msg, Exception ex)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Debug(msg, ex);
}
///
///
///
///
public void Info(string msg)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Info(msg);
}
///
///
///
///
///
public void Info(string msg, Exception ex)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Info(msg, ex);
}
///
///
///
///
public void Warn(string msg)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Warn(msg);
}
///
///
///
///
///
public void Warn(string msg, Exception ex)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Warn(msg, ex);
}
///
///
///
///
public void Error(string msg)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Error(msg);
}
///
///
///
///
///
public void Error(string msg, Exception ex)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Error(msg, ex);
}
///
///
///
///
public void Fatal(string msg)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Fatal(msg);
}
///
///
///
///
///
public void Fatal(string msg, Exception ex)
{
var log = GetLog(this.fileName);
if (log == null)
{
return;
}
log.Fatal(msg, ex);
}
}
}
구성 클래스: Log4net.config
调用方式
引用:log4net.dll
HCC.Base.Comm.NewLogger.dll
实现:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using HCC.Base.Comm.NewLogger;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
LogHelper log = new LogHelper(@"D:\Logger", "stydy");
log.Info(" ");
log.Info(" ", new Exception(" ! 。"));
log.Fatal("gdsgdsgdsgdsgdsgds");
log.Fatal("gdsgdsgdsgdsgdsgds", new Exception(" ! 。"));
log.Warn(" ");
log.Warn("gdsgdsgdsgdsgdsgds", new Exception(" ! 。"));
log.Debug("cbvcbvfgsfgdsgdsgdsgdsgdsgds");
log.Debug("gdsgdsgdsgdsgdsgds", new Exception(" ! 。"));
log.Error(" ");
log.Error(" ",new Exception(" ! 。"));
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.