#region Apache License // // Licensed to the Apache Software Foundation (ASF) under one or more // contributor license agreements. See the NOTICE file distributed with // this work for additional information regarding copyright ownership. // The ASF licenses this file to you under the Apache License, Version 2.0 // (the "License"); you may not use this file except in compliance with // the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // #endregion using System; using System.IO; using log4net; using log4net.Core; namespace log4net.Layout { /// /// Extend this abstract class to create your own log layout format. /// /// /// /// This is the base implementation of the /// interface. Most layout objects should extend this class. /// /// /// /// /// /// Subclasses must implement the /// method. /// /// /// Subclasses should set the in their default /// constructor. /// /// /// /// Nicko Cadell /// Gert Driesen public abstract class LayoutSkeleton : ILayout, IOptionHandler { #region Member Variables /// /// The header text /// /// /// /// See for more information. /// /// private string m_header = null; /// /// The footer text /// /// /// /// See for more information. /// /// private string m_footer = null; /// /// Flag indicating if this layout handles exceptions /// /// /// /// false if this layout handles exceptions /// /// private bool m_ignoresException = true; #endregion #region Constructors /// /// Empty default constructor /// /// /// /// Empty default constructor /// /// protected LayoutSkeleton() { } #endregion #region Implementation of IOptionHandler /// /// Activate component options /// /// /// /// This is part of the delayed object /// activation scheme. The method must /// be called on this object after the configuration properties have /// been set. Until is called this /// object is in an undefined state and must not be used. /// /// /// If any of the configuration properties are modified then /// must be called again. /// /// /// This method must be implemented by the subclass. /// /// abstract public void ActivateOptions(); #endregion #region Implementation of ILayout /// /// Implement this method to create your own layout format. /// /// The TextWriter to write the formatted event to /// The event to format /// /// /// This method is called by an appender to format /// the as text. /// /// abstract public void Format(TextWriter writer, LoggingEvent loggingEvent); /// /// Convenience method for easily formatting the logging event into a string variable. /// /// /// /// Creates a new StringWriter instance to store the formatted logging event. /// public string Format(LoggingEvent loggingEvent) { StringWriter writer = new StringWriter(System.Globalization.CultureInfo.InvariantCulture); Format(writer, loggingEvent); return writer.ToString(); } /// /// The content type output by this layout. /// /// The content type is "text/plain" /// /// /// The content type output by this layout. /// /// /// This base class uses the value "text/plain". /// To change this value a subclass must override this /// property. /// /// virtual public string ContentType { get { return "text/plain"; } } /// /// The header for the layout format. /// /// the layout header /// /// /// The Header text will be appended before any logging events /// are formatted and appended. /// /// virtual public string Header { get { return m_header; } set { m_header = value; } } /// /// The footer for the layout format. /// /// the layout footer /// /// /// The Footer text will be appended after all the logging events /// have been formatted and appended. /// /// virtual public string Footer { get { return m_footer; } set { m_footer = value; } } /// /// Flag indicating if this layout handles exceptions /// /// false if this layout handles exceptions /// /// /// If this layout handles the exception object contained within /// , then the layout should return /// false. Otherwise, if the layout ignores the exception /// object, then the layout should return true. /// /// /// Set this value to override a this default setting. The default /// value is true, this layout does not handle the exception. /// /// virtual public bool IgnoresException { get { return m_ignoresException; } set { m_ignoresException = value; } } #endregion } }