/// <summary> /// ログ内容を非同期的にストレージに出力する /// </summary> /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param> /// <param name="logMessage">出力するログのメッセージ</param> public override async Task WriteStorageAsync(StorageInfo info, MRLogMessageData logMessage) { try { #if !UNITY_EDITOR var storageFile = await info.RootPath.CreateFileAsync(info.FileName, CreationCollisionOption.OpenIfExists); using (var randomAccessStream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) { var stringBuilder = new StringBuilder(); stringBuilder.Append(logMessage.WriteDate.ToString("yyyy/MM/dd HH:mm:sss")); stringBuilder.Append(","); stringBuilder.AppendFormat("[{0}],{1},{2}", logMessage.MessageArgs[2], logMessage.MessageArgs[0], logMessage.MessageArgs[1]); stringBuilder.AppendLine(); var bytes = Encoding.UTF8.GetBytes(stringBuilder.ToString()); randomAccessStream.Seek(randomAccessStream.Size); await randomAccessStream.WriteAsync(bytes.AsBuffer()); } #endif } catch (Exception e) { Debug.Fail("WriteLog is Error " + e); } }
/// <summary> /// メッセージをキューに追加します。 /// </summary> /// <param name="logMessage">メッセージ</param> public void Enquque(MRLogMessageData logMessage) { lock (_lockObject) { _message.Enqueue(logMessage); } }
/// <summary> /// ログ内容を非同期的にストレージに出力する。 /// このクラスでは<see cref="ValidateDateRotate"/>メソッドを利用してログファイルを日付で /// ローテーションを行い、コンストラクタで設定された移譲先の<see cref="IWriteStorage"/>を実装した /// ログ出力処理を依頼します。 /// </summary> /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param> /// <param name="logMessage">出力するログのメッセージ</param> public override async Task WriteStorageAsync(StorageInfo info, MRLogMessageData logMessage) { ValidateDateRotate(); if (Next != null) { await Next.WriteStorageAsync(info, logMessage); } }
/// <summary> /// ログ内容を同期的にストレージに出力する。 /// このクラスでは<see cref="ValidateDateRotate"/>メソッドを利用してログファイルを日付で /// ローテーションを行い、コンストラクタで設定された移譲先の<see cref="IWriteStorage"/>を実装した /// ログ出力処理を依頼します。 /// </summary> /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param> /// <param name="logMessage">出力するログのメッセージ</param> public override void WriteStorage(StorageInfo info, MRLogMessageData logMessage) { ValidateDateRotate(); if (Next != null) { Next.WriteStorage(info, logMessage); } }
/// <summary> /// 格納されたメッセージをすべてでキューします。 /// </summary> /// <returns>メッセージの一覧</returns> public IEnumerable <MRLogMessageData> DeququeAll() { MRLogMessageData[] logMessages; lock (_lockObject) { logMessages = new MRLogMessageData[_message.Count]; for (var i = 0; i < logMessages.Length; i++) { logMessages[i] = _message.Dequeue(); } } return(logMessages); }
/// <summary> /// ログ内容を同期的にストレージに出力する /// </summary> /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param> /// <param name="logMessage">出力するログのメッセージ</param> public override void WriteStorage(StorageInfo info, MRLogMessageData logMessage) { WriteStorageAsync(info, logMessage).GetAwaiter().GetResult(); }
/// <summary> /// ログ内容を非同期的にストレージに出力する /// </summary> /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param> /// <param name="logMessage">出力するログのメッセージ</param> public abstract Task WriteStorageAsync(StorageInfo info, MRLogMessageData logMessage);
/// <summary> /// ログ内容を同期的にストレージに出力する /// </summary> /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param> /// <param name="logMessage">出力するログのメッセージ</param> public abstract void WriteStorage(StorageInfo info, MRLogMessageData logMessage);
/// <summary> /// ログ内容を非同期的にストレージに出力する /// </summary> /// <param name="logMessage">出力するログのメッセージ</param> public async Task WriteStorageAsync(MRLogMessageData logMessage) { await _writeStorage.WriteStorageAsync(StorageInfo.Instance, logMessage); }
/// <summary> /// ログ内容を同期的にストレージに出力する /// </summary> /// <param name="logMessage">出力するログのメッセージ</param> public void WriteStorage(MRLogMessageData logMessage) { _writeStorage.WriteStorage(StorageInfo.Instance, logMessage); }