【问题标题】:Enable and Disable a service [closed]启用和禁用服务[关闭]
【发布时间】:2016-09-07 10:59:56
【问题描述】:

我的日志服务代码:

public class LogService
{
    private static LogService _instance;
    public static LogService Instance
    {
        get
        {
                if (_instance == null)
                    _instance = new LogService();

                return _instance;
            }
        }
    }

    public void ErrorLog(string log)
    {
        Trace.TraceError(log);
    }

    public void WarningLog(string log)
    {
        Trace.TraceWarning(log);
    }
}

我想要一种干净的方式来启用和禁用此服务。 例如:

if (some_variable == false) {
    // ignore all logService calls
}

最好的方法是什么?

【问题讨论】:

  • 我认为你写的方式是正确的(存储启用/禁用标志)
  • web.config 中读取一个属性,如果它满足您指定的条件,则启用该服务。如果没有,请禁用该服务。
  • 恕我直言,您不应该这样做。相反,您应该控制正在使用该服务的侦听器在某处写入输出。所以只需禁用/删除任何监听器。这就是有多少日志框架在起作用。
  • 大家好,我想以一种干净的方式使用标志。我不想检查 ErrorLog 函数中的那个标志(例如,我会有更多),并且只有当值为 T 时才能调用 Trace.TraceError(log)。我相信有更好的方法,我错了吗?
  • 您想在什么情况下启用/禁用?在应用程序启动时还是在运行时?

标签: c# asp.net service error-log


【解决方案1】:

如果您的意思是想要一种“更干净”的方式,而不是在每个方法中放置 if (!IsLoggingEnabled()) return;,那么您可以查看面向方面的编程,您只需在类或相关方法和实际代码上放置一个属性将在编译期间或之后发出。

但这对于替换一些 if() 语句可能有点过头了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多