aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Logging.NLog/NlogManager.cs
blob: 4d6aeadd88c9e61f0068a44f062e5809bb944350 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using NLog;
using NLog.Config;
using NLog.Targets;

namespace MediaBrowser.Logging.Nlog
{
    /// <summary>
    /// Class NlogManager
    /// </summary>
    public static class NlogManager
    {
        /// <summary>
        /// Adds the file target.
        /// </summary>
        /// <param name="path">The path.</param>
        /// <param name="enableDebugLogging">if set to <c>true</c> [enable debug logging].</param>
        public static void AddFileTarget(string path, bool enableDebugLogging)
        {
            var logFile = new FileTarget();

            logFile.FileName = path;
            logFile.Layout = "${longdate}, ${level}, ${logger}, ${message}";

            AddLogTarget(logFile, "ApplicationLogFile", enableDebugLogging);
        }

        /// <summary>
        /// Adds the log target.
        /// </summary>
        /// <param name="target">The target.</param>
        /// <param name="name">The name.</param>
        /// <param name="enableDebugLogging">if set to <c>true</c> [enable debug logging].</param>
        private static void AddLogTarget(Target target, string name, bool enableDebugLogging)
        {
            var config = LogManager.Configuration;

            config.RemoveTarget(name);

            target.Name = name;
            config.AddTarget(name, target);

            var level = enableDebugLogging ? LogLevel.Debug : LogLevel.Info;

            var rule = new LoggingRule("*", level, target);
            config.LoggingRules.Add(rule);

            LogManager.Configuration = config;
        }
    }
}