public LoggerConfiguration() { this.repository = LoggerManager.CreateRepository(RepositoryName); hierarchy = repository as Hierarchy; pattern(); CommonAppenderConfig(); }
static void Main(string[] args) { var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); Thread.SpinWait(4000); string repositoryName = string.Format("Repository"); ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); log4net.Config.XmlConfigurator.Configure(repository); var log = LogManager.GetLogger(typeof(Program)); Thread thread = Thread.CurrentThread; thread.Name = "Main Thread"; ThreadContext.Properties["MainThreadContext"] = "MainThreadContextValue"; log.Info("Nikhil test"); log.Error("oops", new ArgumentOutOfRangeException("argArray")); log.Warn("hmmm", new ApplicationException("app exception")); log.Info("yawn"); Console.ReadKey(); }
private static ILog InternalCreateRollingFileAppender(string repositoryName, string loggerName, string file, Encoding encoding, string pattern = "%date [%thread] %-5level - %message%newline", string maxFileSize = "100MB") { Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository(); PatternLayout patternLayout = new PatternLayout(); patternLayout.ConversionPattern = pattern; patternLayout.ActivateOptions(); RollingFileAppender roller = new RollingFileAppender(); roller.File = file; roller.AppendToFile = true; roller.MaxSizeRollBackups = -1; roller.MaximumFileSize = maxFileSize; roller.StaticLogFileName = true; roller.Encoding = encoding; roller.Layout = patternLayout; roller.RollingStyle = RollingFileAppender.RollingMode.Size; roller.ActivateOptions(); hierarchy.Root.AddAppender(roller); hierarchy.Root.Level = Level.Debug; ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); BasicConfigurator.Configure(repository, roller); return(LogManager.GetLogger(repositoryName, loggerName)); }
private ILog InitializeLogger(string connectionString) { var filter = new LevelMatchFilter(); filter.LevelToMatch = Level.All; filter.ActivateOptions(); var appender = new PostgreSqlAppender(connectionString); appender.AddFilter(filter); appender.ActivateOptions(); string assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().FullName; this.repositoryName = String.Format("{0} Repository", assemblyName); var repository = LoggerManager.CreateRepository(repositoryName); string loggerName = String.Format("{0} Logger", assemblyName); BasicConfigurator.Configure(repository, appender); ILog logger = LogManager.GetLogger(repositoryName, loggerName); return(logger); }
static Log4NetLogger() { string path = String.Format("{0}.config", Assembly.GetExecutingAssembly().CodeBase); string fileName = LoggingConfigurationSettings.Instance.ConfigurationFile; if (!String.IsNullOrEmpty(fileName)) { if (Path.GetFileName(fileName) == fileName) { //it's just a file name, use current directory path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase), fileName); } else { //assume it's rooted path = fileName; } } if (!File.Exists(path)) { throw new FileNotFoundException("Can not find file: " + path); } var repository = LoggerManager.CreateRepository(_repositoryName); log4net.Config.XmlConfigurator.Configure(repository, new Uri(path)); _jsonSettings = new JsonSerializerSettings(); _jsonSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); _jsonSettings.Converters.Add(new StringEnumConverter()); _jsonSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto; _jsonSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat; }
// Create a new file appender public static void ConfigureLog4net(string name, string fileName) { PatternLayout layout = new PatternLayout("%date{yyyy-MM-dd HH:mm:ss,fff} %-5level [%thread]: %message%newline"); layout.ActivateOptions(); LevelMatchFilter filter = new LevelMatchFilter(); filter.LevelToMatch = Level.All; filter.ActivateOptions(); var appender = new FileAppender(); appender.Name = name; appender.File = fileName; appender.AppendToFile = false; appender.Layout = layout; appender.AddFilter(filter); appender.ActivateOptions(); ILoggerRepository repository = LoggerManager.CreateRepository(name); BasicConfigurator.Configure(repository, appender); }
/// <summary> /// Configures the <see cref="T:log4net.Repository.ILoggerRepository" /> using the specified configuration /// file. /// </summary> /// <param name="configFile">The XML file to load the configuration from.</param> /// <remarks> /// <para> /// The configuration file must be valid XML. It must contain /// at least one element called <c>log4net</c> that holds /// the configuration data. /// </para> /// <para> /// The log4net configuration file can possible be specified in the application's /// configuration file (either <c>MyAppName.exe.config</c> for a /// normal application on <c>Web.config</c> for an ASP.NET application). /// </para> /// <para> /// The first element matching <c><configuration></c> will be read as the /// configuration. If this file is also a .NET .config file then you must specify /// a configuration section for the <c>log4net</c> element otherwise .NET will /// complain. Set the type for the section handler to <see cref="T:System.Configuration.IgnoreSectionHandler" />, for example: /// <code lang="XML" escaped="true"> /// <configSections> /// <section name="log4net" type="System.Configuration.IgnoreSectionHandler" /> /// </configSections> /// </code> /// </para> /// <example> /// The following example configures log4net using a configuration file, of which the /// location is stored in the application's configuration file : /// </example> /// <code lang="C#"> /// using log4net.Config; /// using System.IO; /// using System.Configuration; /// /// ... /// /// XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); /// </code> /// <para> /// In the <c>.config</c> file, the path to the log4net can be specified like this : /// </para> /// <code lang="XML" escaped="true"> /// <configuration> /// <appSettings> /// <add key="log4net-config-file" value="log.config" /> /// </appSettings> /// </configuration> /// </code> /// </remarks> public static ICollection Configure(FileInfo configFile) { // 创建默认工厂 ILoggerRepository repository; string repositoryName = "log4net-default-repository"; // 默认工厂 if (LoggerManager.Exists(repositoryName)) { repository = LoggerManager.GetRepository(repositoryName); } else { repository = LoggerManager.CreateRepository(repositoryName); } // 进行配置 ArrayList arrayList = new ArrayList(); using (new LogLog.LogReceivedAdapter(arrayList)) { InternalConfigure(repository, configFile); } repository.ConfigurationMessages = arrayList; return(arrayList); }
public TracingInterceptor(string filePath) { PatternLayout layout = new PatternLayout("% date{ MMM / dd / yyyy HH:mm: ss,fff} [%thread] %-5level %logger %ndc – %message%newline"); LevelMatchFilter filter = new LevelMatchFilter(); filter.LevelToMatch = Level.All; filter.ActivateOptions(); RollingFileAppender appender = new RollingFileAppender(); appender.File = filePath; appender.ImmediateFlush = true; appender.AppendToFile = true; appender.RollingStyle = RollingFileAppender.RollingMode.Date; appender.DatePattern = "-yyyy - MM - dd"; appender.LockingModel = new FileAppender.MinimalLock(); appender.Name = "MyAppender"; appender.AddFilter(filter); appender.Layout = layout; appender.ActivateOptions(); ILoggerRepository repository = LoggerManager.CreateRepository("MyRepository"); BasicConfigurator.Configure(repository, appender); _logger = LogManager.GetLogger("MyRepository", "MyLogger"); }
private static ILog CreateUserManagementLogger() { string instanceName = "UserManagement"; PatternLayout layout = new PatternLayout( "% date{ MMM / dd / yyyy HH:mm: ss,fff}[%thread] %-5level %logger %ndc – %message%newline"); LevelMatchFilter filter = new LevelMatchFilter(); filter.LevelToMatch = Level.All; filter.ActivateOptions(); RollingFileAppender appender = new RollingFileAppender(); appender.File = "userManagement.log"; // string.Format("{0}\\{1}", "", "common.log"); appender.ImmediateFlush = true; appender.AppendToFile = true; appender.RollingStyle = RollingFileAppender.RollingMode.Date; appender.DatePattern = "-yyyy - MM - dd"; appender.LockingModel = new FileAppender.MinimalLock(); appender.Name = string.Format("{0}Appender", instanceName); appender.AddFilter(filter); appender.Layout = layout; appender.ActivateOptions(); string repositoryName = string.Format("{0}Repository", instanceName); ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); string loggerName = string.Format("{0}Logger", instanceName); BasicConfigurator.Configure(repository, appender); return(LogManager.GetLogger(repositoryName, loggerName)); }
/// <summary> /// Initializes with a default configuration. /// </summary> /// <remarks> /// <para> /// Initializes the specified repository using a <see cref="T:log4net.Appender.ConsoleAppender" /> /// that will write to <c>Console.Out</c>. The log messages are /// formatted using the <see cref="T:log4net.Layout.PatternLayout" /> layout object /// with the <see cref="F:log4net.Layout.PatternLayout.DetailConversionPattern" /> /// layout style. /// </para> /// </remarks> public static ICollection Configure() { // 创建默认工厂 ILoggerRepository repository; string repositoryName = "log4net-default-repository"; // 默认工厂 if (LoggerManager.Exists(repositoryName)) { repository = LoggerManager.GetRepository(repositoryName); } else { repository = LoggerManager.CreateRepository(repositoryName); } // 进行配置 ArrayList arrayList = new ArrayList(); using (new LogLog.LogReceivedAdapter(arrayList)) { PatternLayout patternLayout = new PatternLayout(); patternLayout.ConversionPattern = "%timestamp [%thread] %level %logger %ndc - %message%newline"; patternLayout.ActivateOptions(); ConsoleAppender consoleAppender = new ConsoleAppender(); consoleAppender.Layout = patternLayout; consoleAppender.ActivateOptions(); InternalConfigure(repository, consoleAppender); } repository.ConfigurationMessages = arrayList; return(arrayList); }
public Log4NetLogger(string categoryName, XmlElement configuration) { var loggerRepository = LoggerManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(Hierarchy)); _log = LogManager.GetLogger(loggerRepository.Name, categoryName); log4net.Config.XmlConfigurator.Configure(loggerRepository, configuration); }
public Test() { this.Id = _id; _id++; String repoId = Guid.NewGuid().ToString(); repository = LoggerManager.CreateRepository(repoId); }
public Log4NetLogger(string categoryName, XmlElement Config) { var loggerRep = LoggerManager.CreateRepository( Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy)); _log = log4net.LogManager.GetLogger(loggerRep.Name, categoryName); log4net.Config.XmlConfigurator.Configure(loggerRep, Config); }
public void ConfigureUserLog() { this.repositoryName = "Log"; lock (repositoryLocker) { this.repository = LoggerManager.CreateRepository(repositoryName); } Reconfigure(null, GetLogDefault()); }
public AppLoggerLog4Net(string name) { var repository = LoggerManager.CreateRepository(name, typeof(log4net.Repository.Hierarchy.Hierarchy)); XmlConfigurator.Configure(repository); // настраиваеться в конфиге _logger = LogManager.GetLogger(repository.Name, name); }
static LogService() { loggerRepository = LoggerManager.CreateRepository("CoreRepository"); XmlConfigurator.Configure(loggerRepository, new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"));//此文件需要选择始终复制 logInfo = LogManager.GetLogger("CoreRepository", "InfoLog"); logError = LogManager.GetLogger("CoreRepository", "ErrorLog"); logDebug = LogManager.GetLogger("CoreRepository", "DebugLog"); logWarning = LogManager.GetLogger("CoreRepository", "WarningLog"); }
public Log4NetLogger() { var repo = LoggerManager.CreateRepository("LoggerRepo"); XmlConfigurator.ConfigureAndWatch(repo, new FileInfo(Path.Combine(Environment.CurrentDirectory, ".\\log4net.config"))); ILog log = LogManager.GetLogger("LoggerRepo", "Logger"); this.log = log; }
public static void Initialize(string repository) { if (isInitialized) { throw NewAlreadyInitializedException(); } loggerRepository = LoggerManager.CreateRepository(repository); isInitialized = true; }
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)//增加环境配置文件,新建项目默认有;当debug模式运行调用的是 appsettings.Development.json配置内容 .AddEnvironmentVariables(); Configuration = builder.Build(); repository = LoggerManager.CreateRepository("NETCoreRepsitory"); SqlConnecting = Configuration.GetConnectionString("DefaultConnection"); XmlConfigurator.Configure(repository, new System.IO.FileInfo("log4net.config")); }
public Loger(Type t) { var Repository = LoggerManager.GetAllRepositories().FirstOrDefault(p => p.Name == Name); if (Repository == null) { Repository = LoggerManager.CreateRepository(Name); } FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + ("/config/log4net.config")); XmlConfigurator.Configure(Repository, fi); _instance = Repository.GetLogger(Name); }
private static ILog GenerateLogger(string instanceName) { var folderPath = Environment.CurrentDirectory; PatternLayout layout = new PatternLayout(@"-------------------------------------------------------------------------------%newline %date{ MM / dd / yyyy HH:mm: ss,fff}[%thread] %-5level %logger %ndc – %message%newline"); string repositoryName = string.Format("{0}Repository", instanceName); ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); string loggerName = string.Format("{0}Logger", instanceName); BasicConfigurator.Configure(repository, CreateAppender(Level.Info, layout, instanceName), CreateAppender(Level.Error, layout, instanceName)); ILog logger = LogManager.GetLogger(repositoryName, loggerName); return(logger); }
public TracingInterceptor() { PatternLayout layout = new PatternLayout(); ConsoleAppender appender = new ConsoleAppender(); appender.Layout = layout; appender.ActivateOptions(); ILoggerRepository repository = LoggerManager.CreateRepository("MyRepository"); BasicConfigurator.Configure(repository, appender); _logger = LogManager.GetLogger("MyRepository", "MyLogger"); }
public void TestAppenderReconfiguration() { Person[] expectedPersons = new Person[] { null, new Person("Person1"), new Person("Person2"), }; RollbarAppender appender = new RollbarAppender( RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment, TimeSpan.FromSeconds(3) ); string repositoryName = typeof(RollbarAppenderFixture).Name; var repository = LoggerManager.CreateRepository(repositoryName); string loggerName = typeof(RollbarAppenderFixture).Name; BasicConfigurator.Configure(repository, appender); ILog log = LogManager.GetLogger(repositoryName, loggerName); log.Info("Via log4net"); RollbarConfig newConfig = new RollbarConfig(); newConfig.Reconfigure(appender.RollbarConfig); newConfig.Person = expectedPersons[1]; appender.RollbarConfig.Reconfigure(newConfig); log.Info("Via log4net"); newConfig = new RollbarConfig(); newConfig.Reconfigure(appender.RollbarConfig); newConfig.Person = expectedPersons[2]; newConfig.ScrubFields = new string[] { "log4net:UserName", "log4net:HostName", "log4net:Identity", }; appender.RollbarConfig.Reconfigure(newConfig); log.Info("Via log4net"); Assert.IsFalse(this._rollbarCommEvents[0].Payload.Contains("Person")); Assert.IsTrue(this._rollbarCommEvents[1].Payload.Contains(expectedPersons[1].Id)); Assert.IsTrue(this._rollbarCommEvents[2].Payload.Contains(expectedPersons[2].Id)); }
/// <summary> /// 创建日志实例 /// </summary> /// <param name="name"></param> /// <returns></returns> private static ILog CreateLoggerInstance(string name) { // Pattern Layout PatternLayout layout = new PatternLayout("[%logger][%date]%message\r\n"); // Level Filter LevelMatchFilter filter = new LevelMatchFilter(); filter.LevelToMatch = Level.All; filter.ActivateOptions(); // File Appender RollingFileAppender appender = new RollingFileAppender(); // 目录 appender.File = $"log{Path.AltDirectorySeparatorChar}{name}.log"; // 立即写入磁盘 appender.ImmediateFlush = true; // true:追加到文件;false:覆盖文件 appender.AppendToFile = true; // 新的日期或者文件大小达到上限,新建一个文件 appender.RollingStyle = RollingFileAppender.RollingMode.Once; // 文件大小达到上限,新建文件时,文件编号放到文件后缀前面 appender.PreserveLogFileNameExtension = true; // 最小锁定模型以允许多个进程可以写入同一个文件 appender.LockingModel = new FileAppender.MinimalLock(); appender.Name = $"{name}Appender"; appender.AddFilter(filter); appender.Layout = layout; appender.ActivateOptions(); // 设置无限备份=-1 ,最大备份数为30 appender.MaxSizeRollBackups = 30; appender.StaticLogFileName = true; string repositoryName = $"{name}Repository"; try { LoggerManager.GetRepository(repositoryName); } catch { ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); BasicConfigurator.Configure(repository, appender); } var logger = LogManager.GetLogger(repositoryName, name); return(logger); }
internal static Hierarchy GetRepository(string repositoryname) { var repositories = LoggerManager.GetAllRepositories(); var repository = repositories.FirstOrDefault(t => t.Name == repositoryname); if (repository == null) { lock (LockObj) { repositories = LoggerManager.GetAllRepositories(); repository = repositories.FirstOrDefault(t => t.Name == repositoryname); if (repository == null) { repository = LoggerManager.CreateRepository(repositoryname); } } } return(repository as Hierarchy); }
public ILog GetLog() { if (this.configurationRoot == null) { this.configurationRoot = this.GetConfigurationRoot(this.fileFolderPath, this.fileName); } IConfigurationSection log4netSection = this.GetLog4NetConfigurationSection(this.configurationRoot); IEnumerable <AppenderSkeleton> appenders = this.GetAppenders(this.configurationRoot, log4netSection); IConfigurationSection loggerSection = this.GetLoggerSection(log4netSection); IConfigurationSection name = loggerSection.GetSection("name"); string repositoryName = String.Format("{0} Repository", name.Value); ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); string loggerName = String.Format("{0} Logger", name.Value); IConfigurationSection level = loggerSection.GetSection("level"); string levelName = "All"; if (level != null && !String.IsNullOrEmpty(level.Value)) { levelName = level.Value; } ILoggerRepository loggerRepository = LoggerManager.GetAllRepositories().FirstOrDefault(); LevelMatchFilter filter = new LevelMatchFilter(); filter.LevelToMatch = loggerRepository.LevelMap[levelName]; filter.ActivateOptions(); foreach (var appender in appenders) { appender.AddFilter(filter); appender.ActivateOptions(); BasicConfigurator.Configure(repository, appender); } ILog logger = LogManager.GetLogger(repositoryName, loggerName); return(logger); }
//another create version public static log4net.Appender.IAppender createAnotherThingy() { string folderPath = "C:\\OzzElectricLogs"; string instanceName = "instanceNameGod"; //Layout Pattern PatternLayout layout = new PatternLayout("% date{ MMM / dd / yyyy HH:mm: ss,fff}[%thread] %-5level %logger %ndc – %message%newline"); //Level Filter LevelMatchFilter filter = new LevelMatchFilter(); filter.LevelToMatch = Level.All; filter.ActivateOptions(); RollingFileAppender appender = new RollingFileAppender(); appender.File = string.Format("{0}\\{1}", folderPath, "common.log"); appender.ImmediateFlush = true; appender.AppendToFile = true; appender.RollingStyle = RollingFileAppender.RollingMode.Date; appender.DatePattern = "-yyyy-MM-dd"; appender.LockingModel = new FileAppender.MinimalLock(); appender.Name = string.Format("{0}Appender", instanceName); appender.AddFilter(filter); appender.ActivateOptions(); //Populate the log instance string repositoryName = string.Format("{0}Repository", instanceName); ILoggerRepository repository = LoggerManager.CreateRepository(repositoryName); string loggerName = string.Format("{0}Logger", instanceName); BasicConfigurator.Configure(repository, appender); ILog loggering = LogManager.GetLogger(repositoryName, loggerName); loggering.Debug("test print yo"); return(appender); }
/// <summary> /// Creates a repository with the specified name and repository type. /// </summary> /// <remarks> /// <para> /// The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. /// An <see cref="Exception"/> will be thrown if the repository already exists. /// </para> /// </remarks> /// <param name="repository">The name of the repository, this must be unique to the repository.</param> /// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/> /// and has a no arg constructor. An instance of this type will be created to act /// as the <see cref="ILoggerRepository"/> for the repository specified.</param> /// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns> /// <exception cref="LogException">The specified repository already exists.</exception> public static ILoggerRepository CreateRepository(string repository, Type repositoryType) { return(LoggerManager.CreateRepository(repository, repositoryType)); }
/// <summary> /// Creates a repository for the specified assembly and repository type. /// </summary> /// <remarks> /// <para> /// The <see cref="ILoggerRepository"/> created will be associated with the repository /// specified such that a call to <see cref="GetRepository(Assembly)"/> with the /// same assembly specified will return the same repository instance. /// </para> /// </remarks> /// <param name="repositoryAssembly">The assembly to use to get the name of the repository.</param> /// <param name="repositoryType">A <see cref="Type"/> that implements <see cref="ILoggerRepository"/> /// and has a no arg constructor. An instance of this type will be created to act /// as the <see cref="ILoggerRepository"/> for the repository specified.</param> /// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns> public static ILoggerRepository CreateRepository(Assembly repositoryAssembly, Type repositoryType) { return(LoggerManager.CreateRepository(repositoryAssembly, repositoryType)); }
/// <summary> /// Creates a repository with the specified name. /// </summary> /// <remarks> /// <para> /// Creates the default type of <see cref="ILoggerRepository"/> which is a /// <see cref="log4net.Repository.Hierarchy.Hierarchy"/> object. /// </para> /// <para> /// The <paramref name="repository"/> name must be unique. Repositories cannot be redefined. /// An <see cref="Exception"/> will be thrown if the repository already exists. /// </para> /// </remarks> /// <param name="repository">The name of the repository, this must be unique amongst repositories.</param> /// <returns>The <see cref="ILoggerRepository"/> created for the repository.</returns> /// <exception cref="LogException">The specified repository already exists.</exception> public static ILoggerRepository CreateRepository(string repository) { return(LoggerManager.CreateRepository(repository)); }