Как иметь единую log4net dll в многослойном приложении - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть отдельный проект для входа в мое решение для веб-API.В журнале проекта я использую log4net dll.Все работает нормально.

Похоже, мне нужно добавить log4net dll в мой проект web api, который является точкой входа моего приложения.

1) Зачем мне нужнодобавить log4net dll в мой проект web api?

2) Есть ли способ сделать это без добавления log4net в проект web api?Мне нравится использовать мой логгер peoject в разных приложениях, и я не хочу иметь log4net в нескольких проектах.

 public class Logger : ILogger
 {
    private static readonly ILog LoggerObj = LogManager.GetLogger("ErrorLog");

    public Logger()
    {
        XmlConfigurator.Configure();
    }
 }

Global.asax

        protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        UnityConfig.RegisterComponents();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        // Initialize log4net.
        //log4net.Config.XmlConfigurator.Configure();

        // Initialize log4net.
        var logger = new Logger();
    }

1 Ответ

0 голосов
/ 19 ноября 2018

Единственный способ, которым я вижу это, это добавить ваш проект ведения журнала в качестве ссылки на ваш проект веб-API или любой другой проект, который вы хотели бы использовать в качестве ведения журнала.В вашем проекте Web Api щелкните правой кнопкой мыши на References -> Add References.В Project -> Solution выберите ваш проект Logging и нажмите OK.

Edit:

Посмотрите на мою реализацию.Я сделал в отдельном проекте и следовал вышеупомянутым шагам, чтобы связать с другими проектами.

namespace MyProject.Logger {
public partial class Log {

    private static readonly Log _instance = new Log();
    protected ILog monitoringLogger;
    protected static ILog debugLogger;

    private Log() {
        monitoringLogger = LogManager.GetLogger(System.Environment.MachineName);
        debugLogger = LogManager.GetLogger(System.Environment.MachineName);
    }

    public static void Debug(string message) {
        debugLogger.Debug(message);
    }

    public static void Debug(string message, Exception exception) {
        debugLogger.Debug(message, exception);
    }

    public static void Info(string message) {
        _instance.monitoringLogger.Info(message);
    }
}

Надеюсь, это поможет

...