コード例 #1
0
ファイル: Logging.cs プロジェクト: twistedshep/Shinoa
 /// <summary>
 /// Logs a specific string, as given in message.
 /// </summary>
 /// <param name="message">The message to log.</param>
 /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
 public static async Task Log(string message)
 {
     PrintWithTime(message);
     if (loggingFilePath != null)
     {
         await WriteLogWithTime(message, false);
     }
     DiscordLogQueue.Enqueue(new Task(
                                 () =>
     {
         var sendMessageAsync = loggingChannel?.SendMessageAsync(message);
         if (sendMessageAsync == null)
         {
             return;
         }
         try
         {
             sendMessageAsync.GetAwaiter().GetResult();
         }
         catch (Exception e)
         {
             StopLoggingToChannel();
             LogError(e.ToString()).GetAwaiter().GetResult();
             Task.Delay(TimeSpan.FromMinutes(1)).GetAwaiter().GetResult();
             Shinoa.TryReenableLogging().GetAwaiter().GetResult();
         }
     }));
 }
コード例 #2
0
ファイル: Logging.cs プロジェクト: twistedshep/Shinoa
 /// <summary>
 /// Logs a specific string, as given in message, as an error.
 /// </summary>
 /// <param name="message">The message to log.</param>
 /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
 public static async Task LogError(string message)
 {
     PrintErrorWithTime(message);
     if (loggingFilePath != null)
     {
         await WriteLogWithTime(message, true);
     }
     if (message.Length > 2042)
     {
         message = message.Substring(0, 2039) + "...";
     }
     DiscordLogQueue.Enqueue(new Task(
                                 () =>
     {
         var embed = new EmbedBuilder
         {
             Title       = "Error",
             Color       = new Color(200, 0, 0),
             Description = $"```{message}```",
             Author      = new EmbedAuthorBuilder
             {
                 IconUrl = Shinoa.Client.CurrentUser.GetAvatarUrl(),
                 Name    = nameof(Shinoa),
             },
             Timestamp = DateTimeOffset.Now,
             Footer    = new EmbedFooterBuilder
             {
                 Text = Shinoa.VersionString,
             },
         };
         var sendMessageAsync = loggingChannel?.SendEmbedAsync(embed);
         if (sendMessageAsync == null)
         {
             return;
         }
         try
         {
             sendMessageAsync.GetAwaiter().GetResult();
         }
         catch (Exception e)
         {
             StopLoggingToChannel();
             LogError(e.ToString()).GetAwaiter().GetResult();
             Task.Delay(TimeSpan.FromMinutes(1)).GetAwaiter().GetResult();
             Shinoa.TryReenableLogging().GetAwaiter().GetResult();
         }
     }));
 }