【问题标题】:DotLess Custom Logger configured from the web.config从 web.config 配置的 DotLess 自定义记录器
【发布时间】:2015-02-18 03:45:53
【问题描述】:

我通过实现 dotless.Core.Loggers.ILogger 接口创建了一个自定义记录器。

现在我尝试通过在 web.config 中配置它来使用这个记录器,如下所示:

<dotless minifyCss="false" cache="false" web="false" logger="company.product.server.dotLess.CLessLogger" log="debug" />

问题是:没有写入任何跟踪,并且从未调用/创建我的自定义记录器。

如果我将记录器更改为标准记录器之一,例如 ResponseLogger:

<dotless minifyCss="false" cache="false" web="false" logger="dotless.Core.Loggers.AspResponseLogger" log="debug" />

我按预期在响应中收到一条日志消息。

自定义记录器的代码只是将记录转发到我们自己的跟踪器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using company.product.server.tools.trace;
using dotless.Core.Loggers;
using log4net.Core;

namespace company.product.server.dotLess
{
    public class CLessLogger : dotless.Core.Loggers.ILogger
    {
        public CLessLogger()
        {
            CTracerFactory tracerFactory = new CTracerFactory();
            m_tracer = tracerFactory.GetTracer(this.GetType().ToString());
        }
        public void Log(LogLevel level, string message)
        {   
            switch(level) {
                case LogLevel.Debug:
                    Debug(message);
                    break;
                case LogLevel.Error:
                    Error(message);
                    break;
                case LogLevel.Info:
                    Info(message);
                    break;
                case LogLevel.Warn:
                    Warn(message);
                    break;
            }
        }

        public void Info(string message)
        {
            m_tracer.Info(message);
        }

        public void Debug(string message)
        {
            m_tracer.Debug(message);
        }

        public void Warn(string message)
        {
            m_tracer.Warning(message);
        }

        public void Error(string message)
        {
            m_tracer.Error(message);
        }

        ITracer m_tracer;


        #region ILogger Members

        public void Debug(string message, params object[] args)
        {
            m_tracer.DebugFormat(message, args);
        }

        public void Error(string message, params object[] args)
        {
            m_tracer.ErrorFormat(message, args);
        }

        public void Info(string message, params object[] args)
        {
            m_tracer.InfoFormat(message, args);
        }

        public void Warn(string message, params object[] args)
        {
            m_tracer.InfoFormat(message, args);
        }

        #endregion
    }
}

我做错了什么?

(我已经在DotLess google 群里发过了,但是两天没收到回复,我决定交叉发一下,希望没问题)

【问题讨论】:

  • 我想你可能也想发布代码。
  • @GauravJoseph 我添加了记录器代码,虽然我不认为它有那么有趣...

标签: logging dotless


【解决方案1】:

config 元素中的logger 条目需要类的完全限定名,包括程序集。所以,为此:

logger="company.product.server.dotLess.CLessLogger"

如果程序集被命名为company.product,你实际上需要把它放在适当的位置:

logger="company.product.server.dotLess.CLessLogger, company.product"

将, company.product 添加到末尾,它应该可以工作。

【讨论】:

  • 成功了。我已经放弃了,但现在我可以重新激活工作项。非常感谢:-)。
猜你喜欢
  • 2015-02-16
  • 1970-01-01
  • 2011-06-17
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2016-11-04
  • 2023-03-12
相关资源
最近更新 更多