diff --git a/src/Topshelf.Elmah/ElmahConfigurationExtensions.cs b/src/Topshelf.Elmah/ElmahConfigurationExtensions.cs
index 7e761868..6ef5d018 100644
--- a/src/Topshelf.Elmah/ElmahConfigurationExtensions.cs
+++ b/src/Topshelf.Elmah/ElmahConfigurationExtensions.cs
@@ -28,5 +28,15 @@ public static void UseElmah(this HostConfigurator configurator)
{
ElmahLogWriterFactory.Use();
}
+
+ ///
+ /// Specify that you want to use the Elmah logging engine.
+ ///
+ ///
+ /// The desired level of elmah logging
+ public static void UseElmah(this HostConfigurator configurator, ElmahLogLevels logLevels)
+ {
+ ElmahLogWriterFactory.Use(logLevels);
+ }
}
}
\ No newline at end of file
diff --git a/src/Topshelf.Elmah/Logging/ElmahLogWriter.cs b/src/Topshelf.Elmah/Logging/ElmahLogWriter.cs
index 5e194eab..4123ba13 100644
--- a/src/Topshelf.Elmah/Logging/ElmahLogWriter.cs
+++ b/src/Topshelf.Elmah/Logging/ElmahLogWriter.cs
@@ -82,7 +82,8 @@ private void WriteToElmah(ElmahLogLevelsEnum logLevel, string message, Exception
error.HostName = Environment.MachineName;
error.Detail = exception == null ? message : exception.StackTrace;
- _log.Log(error);
+ if(IsLogLevelEnabled(logLevel))
+ _log.Log(error);
}
private string GetLogLevel(ElmahLogLevelsEnum logLevel)
@@ -244,7 +245,23 @@ public void FatalFormat(IFormatProvider provider, string format, params object[]
{
WriteToElmah(ElmahLogLevelsEnum.Fatal, format, args);
}
-
+ private bool IsLogLevelEnabled(ElmahLogLevelsEnum logLevel)
+ {
+ switch (logLevel)
+ {
+ case ElmahLogLevelsEnum.Debug:
+ return IsDebugEnabled;
+ case ElmahLogLevelsEnum.Info:
+ return IsInfoEnabled;
+ case ElmahLogLevelsEnum.Warn:
+ return IsWarnEnabled;
+ case ElmahLogLevelsEnum.Error:
+ return IsErrorEnabled;
+ case ElmahLogLevelsEnum.Fatal:
+ return IsFatalEnabled;
+ }
+ return true;
+ }
public bool IsDebugEnabled
{
get { return _logLevels.IsDebugEnabled; }
diff --git a/src/Topshelf.Elmah/Logging/ElmahLogWriterFactory.cs b/src/Topshelf.Elmah/Logging/ElmahLogWriterFactory.cs
index a014282e..9eacce01 100644
--- a/src/Topshelf.Elmah/Logging/ElmahLogWriterFactory.cs
+++ b/src/Topshelf.Elmah/Logging/ElmahLogWriterFactory.cs
@@ -18,9 +18,15 @@ namespace Topshelf.Logging
public class ElmahLogWriterFactory :
LogWriterFactory
{
+ private readonly ElmahLogLevels _logLevels;
+ private ElmahLogWriterFactory(ElmahLogLevels logLevels)
+ {
+ _logLevels = logLevels;
+ }
+
public LogWriter Get(string name)
{
- return new ElmahLogWriter();
+ return new ElmahLogWriter(_logLevels);
}
public void Shutdown()
@@ -28,9 +34,9 @@ public void Shutdown()
}
- public static void Use()
+ public static void Use(ElmahLogLevels logLevels = null)
{
- HostLogger.UseLogger(new ElmahHostLoggerConfigurator());
+ HostLogger.UseLogger(new ElmahHostLoggerConfigurator(logLevels));
}
@@ -38,9 +44,15 @@ public static void Use()
public class ElmahHostLoggerConfigurator :
HostLoggerConfigurator
{
+ private readonly ElmahLogLevels _logLevels;
+ public ElmahHostLoggerConfigurator(ElmahLogLevels logLevels)
+ {
+ _logLevels = logLevels;
+ }
+
public LogWriterFactory CreateLogWriterFactory()
{
- return new ElmahLogWriterFactory();
+ return new ElmahLogWriterFactory(_logLevels);
}
}
}