包装Log4net时如何记录类名,方法名和行号?

时间:2014-12-28 21:34:04

标签: c# .net c#-4.0 logging log4net

我的目的是什么:日志文件输出将包含类,方法和日志写入的行的名称(在下面的示例中 - Program,Main,16)

问题:日志文件输出包含类的名称,方法和包装类的行,而不是" main"的详细信息。功能

我有2个项目

项目1" Log4netCommon" - 包括功能日志的log4net.dll和包装

项目2" NoDependenceLog4net" - 引用" Log4netCommon"并包含

的主要功能

我的配置文件的一部分:

<appender name="File" type="log4net.Appender.FileAppender">
  <file value="C:/Users/zxc/Desktop/MyFile.txt" />
  <layout type="log4net.Layout.PatternLayout" >
    <conversionPattern value="%date [%thread] %-5level %c - %m%n  %logger [%-5method] %line - [%file] [%location]" />
  </layout>
</appender>

项目2&#34; NoDependenceLog4net

namespace NoDependenceLog4net
{
    public class Program
    {
        static void Main(string[] args)
        {
            var logManager = new Log4netCommon.LogManager();
            var log = logManager.GetLogger(typeof(Program));

            log.Info("we are logging without reference of log4net");
            log.Warn("Warn");
            log.Error("Error");

            Console.ReadLine();
        }
    }

项目1&#34; Log4netCommon

namespace Log4netCommon
{
    class LoggerAdapter : Log4netCommon.ILogger
    {
        private readonly ILog _log;

        internal LoggerAdapter(ILog log)
        {
            _log = log;
        }

        public void Debug(object message)
        {
            _log.Debug(message);
        }
        public void Info(object message)
        {
            _log.Info(message);
        }


    namespace Log4netCommon
    {
        public class LogManager : ILogManager
        {
             static LogManager()
            {
                log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("C:\\Users\\zxc\\Documents\\Visual Studio 2013\\Projects\\Log4netCommon\\Log4netCommon\\AppPatternLayout.config"));
            }

            public ILogger GetLogger(Type type)
            {
                var logger = log4net.LogManager.GetLogger(type);
                return new LoggerAdapter(logger);
            }
        }

}

命名空间Log4netCommon {     公共接口ILogManager     {         ILogger GetLogger(类型类型);     } }

&#34;类似的&#34;我看过的问题

When using wrapper, how to preserve class and method name for Log4Net to log?

wrong file and line in log4net wrapper

How to log MethodName when wrapping Log4net?

0 个答案:

没有答案
相关问题