using System;
using NLog;
using NzbDrone.Common.Serializer;

namespace NzbDrone.Common.Instrumentation
{
    public static class LogEventExtensions
    {
        public static string GetHash(this LogEventInfo logEvent)
        {
            var stackString = logEvent.StackTrace.ToJson();
            var hashSeed = String.Concat(logEvent.LoggerName, logEvent.Exception.GetType().ToString(), stackString, logEvent.Level);
            return HashUtil.CalculateCrc(hashSeed);
        }

        public static string GetFormattedMessage(this LogEventInfo logEvent)
        {
            var message = logEvent.FormattedMessage;

            if (logEvent.Exception != null)
            {
                if (logEvent.Exception != null)
                {
                    if (String.IsNullOrWhiteSpace(message))
                    {
                        message = logEvent.Exception.Message;
                    }
                    else
                    {
                        message += ": " + logEvent.Exception.Message;
                    }
                }

            }

            return message;
        }
    }
}