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