120 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			120 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  UniWebViewLogger.cs
							 | 
						||
| 
								 | 
							
								//  Created by Wang Wei(@onevcat) on 2017-04-11.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  This file is a part of UniWebView Project (https://uniwebview.com)
							 | 
						||
| 
								 | 
							
								//  By purchasing the asset, you are allowed to use this code in as many as projects 
							 | 
						||
| 
								 | 
							
								//  you want, only if you publish the final products under the name of the same account
							 | 
						||
| 
								 | 
							
								//  used for the purchase. 
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  This asset and all corresponding files (such as source code) are provided on an 
							 | 
						||
| 
								 | 
							
								//  “as is” basis, without warranty of any kind, express of implied, including but not 
							 | 
						||
| 
								 | 
							
								//  limited to the warranties of merchantability, fitness for a particular purpose, and 
							 | 
						||
| 
								 | 
							
								//  noninfringement. In no event shall the authors or copyright holders be liable for any 
							 | 
						||
| 
								 | 
							
								//  claim, damages or other liability, whether in action of contract, tort or otherwise, 
							 | 
						||
| 
								 | 
							
								//  arising from, out of or in connection with the software or the use of other dealing in the software.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/// <summary>
							 | 
						||
| 
								 | 
							
								/// A leveled logger which could log UniWebView related messages in 
							 | 
						||
| 
								 | 
							
								/// both development environment and final product.
							 | 
						||
| 
								 | 
							
								/// </summary>
							 | 
						||
| 
								 | 
							
								public class UniWebViewLogger {
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Logger level.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    public enum Level {
							 | 
						||
| 
								 | 
							
								        /// <summary>
							 | 
						||
| 
								 | 
							
								        /// Lowest level. When set to `Verbose`, the logger will log out all messages.
							 | 
						||
| 
								 | 
							
								        /// </summary>
							 | 
						||
| 
								 | 
							
								        Verbose = 0,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /// <summary>
							 | 
						||
| 
								 | 
							
								        /// Debug level. When set to `Debug`, the logger will log out most of messages up to this level.
							 | 
						||
| 
								 | 
							
								        /// </summary>
							 | 
						||
| 
								 | 
							
								        Debug = 10,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /// <summary>
							 | 
						||
| 
								 | 
							
								        /// Info level. When set to `Info`, the logger will log out up to info messages.
							 | 
						||
| 
								 | 
							
								        /// </summary>
							 | 
						||
| 
								 | 
							
								        Info = 20,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /// <summary>
							 | 
						||
| 
								 | 
							
								        /// Critical level. When set to `Critical`, the logger will only log out errors or exceptions.
							 | 
						||
| 
								 | 
							
								        /// </summary>
							 | 
						||
| 
								 | 
							
								        Critical = 80,
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        /// <summary>
							 | 
						||
| 
								 | 
							
								        /// Off level. When set to `Off`, the logger will log out nothing.
							 | 
						||
| 
								 | 
							
								        /// </summary>
							 | 
						||
| 
								 | 
							
								        Off = 99
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private static UniWebViewLogger instance;
							 | 
						||
| 
								 | 
							
								    private Level level;
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Current level of this logger. All messages above current level will be logged out.
							 | 
						||
| 
								 | 
							
								    /// Default is `Critical`, which means the logger only prints errors and exceptions.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    public Level LogLevel {
							 | 
						||
| 
								 | 
							
								        get { return level; }
							 | 
						||
| 
								 | 
							
								        set {
							 | 
						||
| 
								 | 
							
								            Log(Level.Off, "Setting UniWebView logger level to: " + value);
							 | 
						||
| 
								 | 
							
								            level = value;
							 | 
						||
| 
								 | 
							
								            UniWebViewInterface.SetLogLevel((int)value);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private UniWebViewLogger(Level level) {
							 | 
						||
| 
								 | 
							
								        this.level = level;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Instance of the UniWebView logger across the process. Normally you should use this for logging purpose
							 | 
						||
| 
								 | 
							
								    /// in UniWebView, instead of creating a new logger yourself.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    public static UniWebViewLogger Instance {
							 | 
						||
| 
								 | 
							
								        get {
							 | 
						||
| 
								 | 
							
								            if (instance == null) {
							 | 
						||
| 
								 | 
							
								                instance = new UniWebViewLogger(Level.Critical);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            return instance;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Log a verbose message.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    /// <param name="message">The message to log.</param>
							 | 
						||
| 
								 | 
							
								    public void Verbose(string message) { Log(Level.Verbose, message); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Log a debug message.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    /// <param name="message">The message to log.</param>
							 | 
						||
| 
								 | 
							
								    public void Debug(string message) { Log(Level.Debug, message); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Log an info message.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    /// <param name="message">The message to log.</param>
							 | 
						||
| 
								 | 
							
								    public void Info(string message) { Log(Level.Info, message); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /// <summary>
							 | 
						||
| 
								 | 
							
								    /// Log a critical message.
							 | 
						||
| 
								 | 
							
								    /// </summary>
							 | 
						||
| 
								 | 
							
								    /// <param name="message">The message to log.</param>
							 | 
						||
| 
								 | 
							
								    public void Critical(string message) { Log(Level.Critical, message); }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    private void Log(Level level, string message) {
							 | 
						||
| 
								 | 
							
								        if (level >= this.LogLevel) {
							 | 
						||
| 
								 | 
							
								            var logMessage = "<UniWebView> " + message;
							 | 
						||
| 
								 | 
							
								            if (level == Level.Critical) {
							 | 
						||
| 
								 | 
							
								                UnityEngine.Debug.LogError(logMessage);
							 | 
						||
| 
								 | 
							
								            } else {
							 | 
						||
| 
								 | 
							
								                UnityEngine.Debug.Log(logMessage);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |