﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PH.APPL.Services.Contracts
{
    public interface ILogService
    {
        void Debug(Exception exception, string message, object[] parameters = null);

        void Debug(string message, object[] parameters = null
            , Exception exception = null, Dictionary<object, object> additionalProperties = null);

        void Error(Exception exception, string message, object[] parameters = null);

        void Error(string message, object[] parameters = null, Exception exception = null
            , Dictionary<object, object> additionalProperties = null);

        void Fatal(Exception exception, string message, object[] parameters = null);

        void Fatal(string message, object[] parameters = null
            , Exception exception = null, Dictionary<object, object> additionalProperties = null);

        void Info(string message, object[] parameters = null
            , Dictionary<object, object> additionalProperties = null);

        void Trace(Exception exception, string message, object[] parameters = null
            , Dictionary<object, object> additionalProperties = null);

        void Trace(string message, object[] parameters = null
            , Exception exception = null, Dictionary<object, object> additionalProperties = null);

        void Warn(Exception exception, string message, object[] parameters = null
            , Dictionary<object, object> additionalProperties = null);

        void Warn(string message, object[] parameters = null
            , Exception exception = null, Dictionary<object, object> additionalProperties = null);
    }

}
