Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.Common/3.4/Logger.cs @ 5779

Last change on this file since 5779 was 5711, checked in by ascheibe, 14 years ago

#1233

  • use SlaveComm Endpoint from app.config
  • various further slave bugfixes/cleanups
  • added preliminary icon for hive slave ui and some slave ui improvements
  • added resource deletion to admin ui
  • fix service exception thrown if there is no EventLog
File size: 1.7 KB
Line 
1using System;
2using System.Diagnostics;
3using System.Security;
4using System.Threading;
5
6namespace HeuristicLab.Services.Hive.Common {
7  public class LogFactory {
8    public static ILogger GetLogger(string source) {
9      return new Logger("HL.Hive", source);
10    }
11  }
12
13  public interface ILogger {
14    void Log(string message);
15    void Error(Exception e);
16  }
17
18  internal class Logger : ILogger {
19    private EventLog log;
20
21    /// <summary>
22    /// Creating an EventSource requires certain permissions, which by default a IIS AppPool user does not have.
23    /// In this case just ignore security exceptions.
24    /// In order to make this work, the eventsource needs to be created manually
25    /// </summary>
26    public Logger(string name, string source) {
27      try {
28        if (!EventLog.SourceExists(source)) {
29          EventLog.CreateEventSource(source, name);
30        }
31        log = new EventLog(name);
32        log.Source = source;
33      }
34      catch (SecurityException) { }
35    }
36
37    public void Log(string message) {
38      try {
39        if (log != null) {
40          log.WriteEntry(string.Format("{0} (AppDomain: {1}, Thread: {2})", message, AppDomain.CurrentDomain.Id, Thread.CurrentThread.ManagedThreadId), EventLogEntryType.Information);
41        }
42      }
43      catch (SecurityException) { }
44    }
45
46    public void Error(Exception e) {
47      try {
48        if (log != null) {
49          log.WriteEntry(string.Format("{0} (AppDomain: {1}, Thread: {2})", e.Message, AppDomain.CurrentDomain.Id, Thread.CurrentThread.ManagedThreadId), EventLogEntryType.Error);
50        }
51      }
52      catch (SecurityException) { }
53    }
54  }
55}
Note: See TracBrowser for help on using the repository browser.