public void Start() { // ObservableLogger.Listener.LogToUnityDebug()を呼び出すことで、 // 発行されたログをUnityEditorのコンソールに出力してくれるようになる // なお複数回呼び出すとログが重複して出力されてしまう // 多重実行に注意 UniRx.Diagnostics.ObservableLogger.Listener.LogToUnityDebug(); // ObservableLogger.ListenerはIObservable<LogEntry> // これを購読することで発行されたログを購読できる UniRx.Diagnostics.ObservableLogger.Listener // ログレベルでフィルタリング .Where(x => x.LogType == LogType.Error || x.LogType == LogType.Exception) // 1フレームの間に発行されたログを集約する .BatchFrame() //発行されたログをファイルに書き出す .Subscribe(WriteAsync) .AddTo(this); // loggerを用いて任意のLogメッセージを発行可能 // 発行したLogメッセージは ObservableLogger.Listener より購読可能 _logger.Debug("Debugメッセージ"); _logger.Error("エラーが発生しました"); _logger.Exception(new Exception("例外が発生しました")); }
private void OnEnable() { Logging.Info("listen " + m_port); var m_http = new HttpDispatcher(SetupHttpMount()); m_console = new WSConsole(); m_console.Listen(m_port, m_http); var utf8 = new System.Text.UTF8Encoding(false); m_disposable = Logging.Observable.Subscribe(x => { try { // LogEntry to Json var json = UnityEngine.JsonUtility.ToJson(x); m_console.SendFrame(WebSocketFrameOpCode.Text, new ArraySegment <byte>(utf8.GetBytes(json))); } catch (Exception ex) { Logger.Error(ex); } }); }