LogWriter.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using log4net.Core;
  6. using System.Reflection;
  7. namespace Aitex.Core.RT.Log
  8. {
  9. class LogWriter
  10. {
  11. private readonly static Type ThisDeclaringType = typeof(LogWriter);
  12. private readonly ILogger defaultLogger;
  13. public LogWriter()
  14. {
  15. defaultLogger = log4net.Core.LoggerManager.GetLogger(Assembly.GetExecutingAssembly(), "CommonLogger");
  16. }
  17. string FormatLogString(LogItem logItem)
  18. {
  19. string fileName = string.Empty;
  20. string result = logItem.msg;
  21. try
  22. {
  23. //fileName = logItem.sf.GetFileName().Substring(logItem.sf.GetFileName().LastIndexOf('\\') + 1);
  24. //2014-10-17 17:53:51.9 INFO Log.cs Line:50 - Config模块初始化成功.
  25. var temp = logItem.sf.GetFileName();
  26. if (temp != null)
  27. {
  28. fileName = temp.Substring(temp.LastIndexOf('\\') + 1);
  29. }
  30. }
  31. catch (Exception)
  32. {
  33. fileName = string.Empty;
  34. }
  35. try
  36. {
  37. //result = string.Format("{0} LOG.{1} {2} Line:{3} {4}() - {5}", logItem.dt.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  38. // logItem.lv.Name,
  39. // fileName,
  40. // logItem.sf.GetFileLineNumber().ToString(),
  41. // logItem.sf.GetMethod().Name,
  42. // logItem.msg);
  43. //result = string.Format("{0}\t{1}\t{2}\t{3}", logItem.dt.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  44. // logItem.lv.Name,
  45. // logItem.StackFile,
  46. // logItem.msg);
  47. result = string.Format("{0}\t{1}\t{2} ", logItem.dt.ToString("yyyy/MM/dd HH:mm:ss.fff"),
  48. logItem.lv.Name,
  49. logItem.msg);
  50. }
  51. catch (Exception)
  52. {
  53. }
  54. return result;
  55. }
  56. public string Write(LogItem logItem)
  57. {
  58. string log = FormatLogString(logItem);
  59. if (defaultLogger.IsEnabledFor(logItem.lv))
  60. {
  61. defaultLogger.Log(typeof(LogWriter), logItem.lv, log, logItem.ex);
  62. }
  63. return log;
  64. }
  65. }
  66. public class TypedLogWriter
  67. {
  68. private readonly ILogger _logger;
  69. public TypedLogWriter(string type)
  70. {
  71. _logger = log4net.Core.LoggerManager.GetLogger(Assembly.GetExecutingAssembly(), type);
  72. }
  73. public void Write(string text)
  74. {
  75. _logger.Log(typeof(TypedLogWriter), Level.Info, text, null);
  76. }
  77. }
  78. }