123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173 |
- #region Apache License
- #endregion
- using System;
- using System.Collections;
- using System.IO;
- #if NETSTANDARD1_3
- using System.Reflection;
- #endif
- using log4net.Core;
- using log4net.Layout.Pattern;
- using log4net.Util;
- using log4net.Util.PatternStringConverters;
- using AppDomainPatternConverter=log4net.Layout.Pattern.AppDomainPatternConverter;
- using DatePatternConverter=log4net.Layout.Pattern.DatePatternConverter;
- using IdentityPatternConverter=log4net.Layout.Pattern.IdentityPatternConverter;
- using PropertyPatternConverter=log4net.Layout.Pattern.PropertyPatternConverter;
- using UserNamePatternConverter=log4net.Layout.Pattern.UserNamePatternConverter;
- using UtcDatePatternConverter=log4net.Layout.Pattern.UtcDatePatternConverter;
- namespace log4net.Layout
- {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public class PatternLayout : LayoutSkeleton
- {
- #region Constants
-
-
-
-
-
-
-
-
-
-
- public const string DefaultConversionPattern ="%message%newline";
-
-
-
-
-
-
-
-
-
- public const string DetailConversionPattern = "%timestamp [%thread] %level %logger %ndc - %message%newline";
- #endregion
- #region Static Fields
-
-
-
-
-
-
-
-
- private static Hashtable s_globalRulesRegistry;
- #endregion Static Fields
- #region Member Variables
-
-
-
-
- private string m_pattern;
-
-
-
-
- private PatternConverter m_head;
-
-
-
- private Hashtable m_instanceRulesRegistry = new Hashtable();
- #endregion
- #region Static Constructor
-
-
-
-
-
-
-
-
- static PatternLayout()
- {
- s_globalRulesRegistry = new Hashtable(45);
- s_globalRulesRegistry.Add("literal", typeof(LiteralPatternConverter));
- s_globalRulesRegistry.Add("newline", typeof(NewLinePatternConverter));
- s_globalRulesRegistry.Add("n", typeof(NewLinePatternConverter));
- #if !NETCF && !SSCLI && !CLIENT_PROFILE && !NETSTANDARD1_3
- s_globalRulesRegistry.Add("aspnet-cache", typeof(AspNetCachePatternConverter));
- s_globalRulesRegistry.Add("aspnet-context", typeof(AspNetContextPatternConverter));
- s_globalRulesRegistry.Add("aspnet-request", typeof(AspNetRequestPatternConverter));
- s_globalRulesRegistry.Add("aspnet-session", typeof(AspNetSessionPatternConverter));
- #endif
- s_globalRulesRegistry.Add("c", typeof(LoggerPatternConverter));
- s_globalRulesRegistry.Add("logger", typeof(LoggerPatternConverter));
- s_globalRulesRegistry.Add("C", typeof(TypeNamePatternConverter));
- s_globalRulesRegistry.Add("class", typeof(TypeNamePatternConverter));
- s_globalRulesRegistry.Add("type", typeof(TypeNamePatternConverter));
- s_globalRulesRegistry.Add("d", typeof(DatePatternConverter));
- s_globalRulesRegistry.Add("date", typeof(DatePatternConverter));
- s_globalRulesRegistry.Add("exception", typeof(ExceptionPatternConverter));
- s_globalRulesRegistry.Add("F", typeof(FileLocationPatternConverter));
- s_globalRulesRegistry.Add("file", typeof(FileLocationPatternConverter));
- s_globalRulesRegistry.Add("l", typeof(FullLocationPatternConverter));
- s_globalRulesRegistry.Add("location", typeof(FullLocationPatternConverter));
- s_globalRulesRegistry.Add("L", typeof(LineLocationPatternConverter));
- s_globalRulesRegistry.Add("line", typeof(LineLocationPatternConverter));
- s_globalRulesRegistry.Add("m", typeof(MessagePatternConverter));
- s_globalRulesRegistry.Add("message", typeof(MessagePatternConverter));
- s_globalRulesRegistry.Add("M", typeof(MethodLocationPatternConverter));
- s_globalRulesRegistry.Add("method", typeof(MethodLocationPatternConverter));
- s_globalRulesRegistry.Add("p", typeof(LevelPatternConverter));
- s_globalRulesRegistry.Add("level", typeof(LevelPatternConverter));
- s_globalRulesRegistry.Add("P", typeof(PropertyPatternConverter));
- s_globalRulesRegistry.Add("property", typeof(PropertyPatternConverter));
- s_globalRulesRegistry.Add("properties", typeof(PropertyPatternConverter));
- s_globalRulesRegistry.Add("r", typeof(RelativeTimePatternConverter));
- s_globalRulesRegistry.Add("timestamp", typeof(RelativeTimePatternConverter));
-
- #if !(NETCF || NETSTANDARD1_3)
- s_globalRulesRegistry.Add("stacktrace", typeof(StackTracePatternConverter));
- s_globalRulesRegistry.Add("stacktracedetail", typeof(StackTraceDetailPatternConverter));
- #endif
- s_globalRulesRegistry.Add("t", typeof(ThreadPatternConverter));
- s_globalRulesRegistry.Add("thread", typeof(ThreadPatternConverter));
-
- s_globalRulesRegistry.Add("x", typeof(NdcPatternConverter));
- s_globalRulesRegistry.Add("ndc", typeof(NdcPatternConverter));
-
- s_globalRulesRegistry.Add("X", typeof(PropertyPatternConverter));
- s_globalRulesRegistry.Add("mdc", typeof(PropertyPatternConverter));
- s_globalRulesRegistry.Add("a", typeof(AppDomainPatternConverter));
- s_globalRulesRegistry.Add("appdomain", typeof(AppDomainPatternConverter));
- s_globalRulesRegistry.Add("u", typeof(IdentityPatternConverter));
- s_globalRulesRegistry.Add("identity", typeof(IdentityPatternConverter));
- s_globalRulesRegistry.Add("utcdate", typeof(UtcDatePatternConverter));
- s_globalRulesRegistry.Add("utcDate", typeof(UtcDatePatternConverter));
- s_globalRulesRegistry.Add("UtcDate", typeof(UtcDatePatternConverter));
- s_globalRulesRegistry.Add("w", typeof(UserNamePatternConverter));
- s_globalRulesRegistry.Add("username", typeof(UserNamePatternConverter));
- }
- #endregion Static Constructor
- #region Constructors
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public PatternLayout() : this(DefaultConversionPattern)
- {
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public PatternLayout(string pattern)
- {
-
- IgnoresException = true;
- m_pattern = pattern;
- if (m_pattern == null)
- {
- m_pattern = DefaultConversionPattern;
- }
- ActivateOptions();
- }
- #endregion
-
-
-
-
-
-
-
-
-
-
-
- public string ConversionPattern
- {
- get { return m_pattern; }
- set { m_pattern = value; }
- }
-
-
-
-
-
-
-
-
-
-
-
- virtual protected PatternParser CreatePatternParser(string pattern)
- {
- PatternParser patternParser = new PatternParser(pattern);
-
- foreach(DictionaryEntry entry in s_globalRulesRegistry)
- {
- ConverterInfo converterInfo = new ConverterInfo();
- converterInfo.Name = (string)entry.Key;
- converterInfo.Type = (Type)entry.Value;
- patternParser.PatternConverters[entry.Key] = converterInfo;
- }
-
- foreach(DictionaryEntry entry in m_instanceRulesRegistry)
- {
- patternParser.PatternConverters[entry.Key] = entry.Value;
- }
- return patternParser;
- }
-
- #region Implementation of IOptionHandler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- override public void ActivateOptions()
- {
- m_head = CreatePatternParser(m_pattern).Parse();
- PatternConverter curConverter = m_head;
- while(curConverter != null)
- {
- PatternLayoutConverter layoutConverter = curConverter as PatternLayoutConverter;
- if (layoutConverter != null)
- {
- if (!layoutConverter.IgnoresException)
- {
-
- this.IgnoresException = false;
- break;
- }
- }
- curConverter = curConverter.Next;
- }
- }
- #endregion
- #region Override implementation of LayoutSkeleton
-
-
-
-
-
-
-
-
-
-
-
- override public void Format(TextWriter writer, LoggingEvent loggingEvent)
- {
- if (writer == null)
- {
- throw new ArgumentNullException("writer");
- }
- if (loggingEvent == null)
- {
- throw new ArgumentNullException("loggingEvent");
- }
- PatternConverter c = m_head;
-
- while(c != null)
- {
- c.Format(writer, loggingEvent);
- c = c.Next;
- }
- }
- #endregion
-
-
-
-
-
-
-
-
-
-
- public void AddConverter(ConverterInfo converterInfo)
- {
- if (converterInfo == null) throw new ArgumentNullException("converterInfo");
- if (!typeof(PatternConverter).IsAssignableFrom(converterInfo.Type))
- {
- throw new ArgumentException("The converter type specified [" + converterInfo.Type + "] must be a subclass of log4net.Util.PatternConverter", "converterInfo");
- }
- m_instanceRulesRegistry[converterInfo.Name] = converterInfo;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- public void AddConverter(string name, Type type)
- {
- if (name == null) throw new ArgumentNullException("name");
- if (type == null) throw new ArgumentNullException("type");
- ConverterInfo converterInfo = new ConverterInfo();
- converterInfo.Name = name;
- converterInfo.Type = type;
- AddConverter(converterInfo);
- }
- }
- }
|