using FishNet.Documenting;
using System;
using System.Runtime.CompilerServices;
using UnityEngine;
namespace FishNet.Managing.Logging
{
    /// 
    /// Base for logging configurations.
    /// 
    public abstract class LoggingConfiguration : ScriptableObject
    {
        #region Serialized.
        /// 
        /// True to use logging features. False to disable all logging.
        /// 
        [Tooltip("True to use logging features. False to disable all logging.")]
        public bool LoggingEnabled = true;
        #endregion
        /// 
        /// Initializes script for use.
        /// 
        /// 
        public virtual void InitializeOnce() { }
        /// 
        /// True if can log for loggingType.
        /// 
        /// Type of logging being filtered.
        /// 
        public abstract bool CanLog(LoggingType loggingType);
        /// 
        /// Logs a common value if can log.
        /// 
        public abstract void Log(string value);
        /// 
        /// Logs a warning value if can log.
        /// 
        public abstract void LogWarning(string value);
        /// 
        /// Logs an error value if can log.
        /// 
        public abstract void LogError(string value);
        /// 
        /// Clones this logging configuration.
        /// 
        /// 
        public abstract LoggingConfiguration Clone();
    }
}