ProjectArcade

Форк
0
69 строк · 2.1 Кб
1
using System.Runtime.InteropServices;
2

3
namespace DokanNet.Logging
4
{
5
    /// <summary>
6
    /// Write log using OutputDebugString 
7
    /// </summary>
8
    /// <remarks>
9
    /// To see the output in visual studio 
10
    /// Project + %Properties, Debug tab, check "Enable unmanaged code debugging".
11
    /// </remarks> 
12
    public class DebugViewLogger : ILogger
13
    {
14
        private readonly string _loggerName;
15

16
        /// <summary>
17
        /// Initializes a new instance of the <see cref="DebugViewLogger"/> class.
18
        /// </summary>
19
        /// <param name="loggerName">Optional name to be added to each log line.</param>
20
        public DebugViewLogger(string loggerName = "")
21
        {
22
            _loggerName = loggerName;
23
        }
24

25
        /// <inheritdoc />
26
        public bool DebugEnabled { get { return true; } }
27

28
        /// <inheritdoc />
29
        public void Debug(string message, params object[] args)
30
        {
31
            WriteMessageToDebugView("debug", message, args);
32
        }
33

34
        /// <inheritdoc />
35
        public void Info(string message, params object[] args)
36
        {
37
            WriteMessageToDebugView("info", message, args);
38
        }
39

40
        /// <inheritdoc />
41
        public void Warn(string message, params object[] args)
42
        {
43
            WriteMessageToDebugView("warn", message, args);
44
        }
45

46
        /// <inheritdoc />
47
        public void Error(string message, params object[] args)
48
        {
49
            WriteMessageToDebugView("error", message, args);
50
        }
51

52
        /// <inheritdoc />
53
        public void Fatal(string message, params object[] args)
54
        {
55
            WriteMessageToDebugView("fatal", message, args);
56
        }
57

58
        [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
59
        private static extern void OutputDebugString(string message);
60

61
        private void WriteMessageToDebugView(string category, string message, params object[] args)
62
        {
63
            if (args != null && args.Length > 0)
64
                message = string.Format(message, args);
65

66
            OutputDebugString(message.FormatMessageForLogging(category, _loggerName));
67
        }
68
    }
69
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.