jellyfin/MediaBrowser.Server.Startup.Common/UnhandledExceptionWriter.cs
2015-09-13 17:32:02 -04:00

40 lines
1.2 KiB
C#

using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Implementations.Logging;
using MediaBrowser.Model.Logging;
using System;
using System.IO;
namespace MediaBrowser.Server.Startup.Common
{
public class UnhandledExceptionWriter
{
private readonly IApplicationPaths _appPaths;
private readonly ILogger _logger;
private readonly ILogManager _logManager;
public UnhandledExceptionWriter(IApplicationPaths appPaths, ILogger logger, ILogManager logManager)
{
_appPaths = appPaths;
_logger = logger;
_logManager = logManager;
}
public void Log(Exception ex)
{
_logger.ErrorException("UnhandledException", ex);
_logManager.Flush();
var path = Path.Combine(_appPaths.LogDirectoryPath, "unhandled_" + Guid.NewGuid() + ".txt");
_fileSystem.CreateDirectory(Path.GetDirectoryName(path));
var builder = LogHelper.GetLogMessage(ex);
// Write to console just in case file logging fails
Console.WriteLine("UnhandledException");
Console.WriteLine(builder.ToString());
_fileSystem.WriteAllText(path, builder.ToString());
}
}
}