Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 ///     メッセージをキューに追加します。
 /// </summary>
 /// <param name="logMessage">メッセージ</param>
 public void Enquque(MRLogMessageData logMessage)
 {
     lock (_lockObject)
     {
         _message.Enqueue(logMessage);
     }
 }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
 /// <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);
     }
 }
Ejemplo n.º 5
0
        /// <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);
        }
Ejemplo n.º 6
0
 /// <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();
 }
Ejemplo n.º 7
0
 /// <summary>
 /// ログ内容を非同期的にストレージに出力する
 /// </summary>
 /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param>
 /// <param name="logMessage">出力するログのメッセージ</param>
 public abstract Task WriteStorageAsync(StorageInfo info, MRLogMessageData logMessage);
Ejemplo n.º 8
0
 /// <summary>
 /// ログ内容を同期的にストレージに出力する
 /// </summary>
 /// <param name="info">出力するストレージの情報を持つ<see cref="StorageInfo"/></param>
 /// <param name="logMessage">出力するログのメッセージ</param>
 public abstract void WriteStorage(StorageInfo info, MRLogMessageData logMessage);
Ejemplo n.º 9
0
 /// <summary>
 /// ログ内容を非同期的にストレージに出力する
 /// </summary>
 /// <param name="logMessage">出力するログのメッセージ</param>
 public async Task WriteStorageAsync(MRLogMessageData logMessage)
 {
     await _writeStorage.WriteStorageAsync(StorageInfo.Instance, logMessage);
 }
Ejemplo n.º 10
0
 /// <summary>
 /// ログ内容を同期的にストレージに出力する
 /// </summary>
 /// <param name="logMessage">出力するログのメッセージ</param>
 public void WriteStorage(MRLogMessageData logMessage)
 {
     _writeStorage.WriteStorage(StorageInfo.Instance, logMessage);
 }