using System;
namespace Umbraco.Cms.Core.Logging
{
///
/// Defines the profiling logging service.
///
public interface IProfilingLogger
{
///
/// Profiles an action and log as information messages.
///
DisposableTimer TraceDuration(string startMessage, object[] startMessageArgs = null);
///
/// Profiles an action and log as information messages.
///
DisposableTimer TraceDuration(string startMessage, string completeMessage, string failMessage = null, object[] startMessageArgs = null, object[] endMessageArgs = null, object[] failMessageArgs = null);
///
/// Profiles an action and log as information messages.
///
DisposableTimer TraceDuration(Type loggerType, string startMessage, string completeMessage, string failMessage = null, object[] startMessageArgs = null, object[] endMessageArgs = null, object[] failMessageArgs = null);
///
/// Profiles an action and log as debug messages.
///
DisposableTimer DebugDuration(string startMessage, object[] startMessageArgs = null);
///
/// Profiles an action and log as debug messages.
///
DisposableTimer DebugDuration(string startMessage, string completeMessage, string failMessage = null, int thresholdMilliseconds = 0, object[] startMessageArgs = null, object[] endMessageArgs = null, object[] failMessageArgs = null);
///
/// Profiles an action and log as debug messages.
///
DisposableTimer DebugDuration(Type loggerType, string startMessage, string completeMessage, string failMessage = null, int thresholdMilliseconds = 0, object[] startMessageArgs = null, object[] endMessageArgs = null, object[] failMessageArgs = null);
}
}