using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Collections.Concurrent;
|
using System.Configuration;
|
|
using log4net;
|
using log4net.Appender;
|
using log4net.Core;
|
using log4net.Layout;
|
using log4net.Repository;
|
using log4net.Repository.Hierarchy;
|
using log4net.Config;
|
using System.IO;
|
using System.Web;
|
|
//[assembly: log4net.Config.XmlConfigurator(Watch = true)]
|
namespace IStation
|
{
|
internal static class LogConfig
|
{
|
//默认配置
|
private const string LEVEL = "All";//等级
|
private const bool APPENDTOFILE = true;//是否追加到文件
|
private const long MAXFILESIZE = 10240;//最大文件尺寸
|
private const int MAXSIZEROLLBACKUPS = 100;
|
private const bool STATICLOGFILENAME = false;//文件名称是否固定
|
private const string ROLLINGSTYLE = "Date";
|
private const string DATEPATTERN = "yyyyMMdd\".txt\"";
|
private const string CONVERSIONPATTERN = "%d|%m|%n";
|
|
//日志根目录
|
private const string _folder = "Logs";
|
|
//获取日志
|
public static ILog GetLogger(string name, bool additivity = false)
|
{
|
var loggerName = GetLoggerName(name);
|
if (LogManager.Exists(loggerName) == null)
|
{
|
RollingFileAppender appender = CreateFileAppender(loggerName, GetFolder(name));
|
Hierarchy hierarchy= (Hierarchy)LogManager.GetRepository();
|
Logger logger= hierarchy.GetLogger(loggerName,hierarchy.LoggerFactory);
|
logger.Hierarchy = hierarchy;
|
logger.Level = Level.All;
|
logger.Parent = hierarchy.Root;
|
logger.Additivity = additivity;
|
logger.AddAppender(appender);
|
logger.Repository.Configured = true;
|
}
|
var log = LogManager.GetLogger(loggerName);
|
return log;
|
}
|
|
//获取logger名称
|
private static string GetLoggerName(string name)
|
{
|
return $"log{name.ToLower()}";
|
}
|
|
//获取文件夹
|
private static string GetFolder(string name)
|
{
|
if (string.IsNullOrEmpty(name))
|
return default;
|
return $"{_folder}\\{name}\\";
|
}
|
|
//获取日志等级
|
private static Level GetLoggerLevel(string level)
|
{
|
if (string.IsNullOrEmpty(level))
|
return Level.All;
|
switch (level.ToLower())
|
{
|
case "all": return Level.All;
|
case "debug": return Level.Debug;
|
case "info": return Level.Info;
|
case "warn": return Level.Warn;
|
case "error": return Level.Error;
|
case "fatal": return Level.Fatal;
|
default: return Level.All;
|
}
|
}
|
|
//创建FileAppender
|
private static RollingFileAppender CreateFileAppender
|
(
|
string appenderName,
|
string file,
|
bool appendToFile = true,
|
long maxFileSize = 10240,
|
int maxSizeRollBackups = 100,
|
bool staticLogFileName = false,
|
RollingFileAppender.RollingMode rollingMode = RollingFileAppender.RollingMode.Date,
|
string datePattern = "yyyyMMdd\".txt\"",
|
string layoutPattern = "%d|%m|%n")
|
{
|
RollingFileAppender appender = new RollingFileAppender
|
{
|
LockingModel = new FileAppender.MinimalLock(),
|
Name = appenderName,
|
File = file,
|
AppendToFile = appendToFile,
|
MaxFileSize = maxFileSize,
|
MaxSizeRollBackups = maxSizeRollBackups,
|
StaticLogFileName = staticLogFileName,
|
RollingStyle = rollingMode,
|
DatePattern = datePattern
|
};
|
PatternLayout layout = new PatternLayout(layoutPattern);
|
appender.Layout = layout;
|
layout.ActivateOptions();
|
appender.ActivateOptions();
|
return appender;
|
}
|
|
|
|
|
}
|
}
|