Logging execution times of commands.
This commit is contained in:
parent
bbf2789704
commit
76fc3be986
@ -4,8 +4,10 @@ using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Administration.Commands;
|
||||
using NadekoBot.Modules.Music;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using System.Reflection;
|
||||
@ -43,6 +45,12 @@ namespace NadekoBot
|
||||
statsStopwatch.Start();
|
||||
|
||||
commandService.CommandExecuted += StatsCollector_RanCommand;
|
||||
commandService.CommandFinished += CommandService_CommandFinished;
|
||||
File.Create("errors.txt");
|
||||
commandService.CommandErrored += (s, e) => File.AppendAllText("errors.txt", $@"Command: {e.Command}
|
||||
{e.Exception}
|
||||
-------------------------------------
|
||||
");
|
||||
|
||||
Task.Run(StartCollecting);
|
||||
|
||||
@ -107,6 +115,7 @@ namespace NadekoBot
|
||||
carbonStatusTimer.Elapsed += async (s, e) => await SendUpdateToCarbon().ConfigureAwait(false);
|
||||
carbonStatusTimer.Start();
|
||||
}
|
||||
|
||||
HttpClient carbonClient = new HttpClient();
|
||||
private async Task SendUpdateToCarbon()
|
||||
{
|
||||
@ -177,9 +186,11 @@ namespace NadekoBot
|
||||
|
||||
private async Task StartCollecting()
|
||||
{
|
||||
var statsSw = new Stopwatch();
|
||||
while (true)
|
||||
{
|
||||
await Task.Delay(new TimeSpan(0, 30, 0)).ConfigureAwait(false);
|
||||
statsSw.Start();
|
||||
try
|
||||
{
|
||||
var onlineUsers = await Task.Run(() => NadekoBot.Client.Servers.Sum(x => x.Users.Count())).ConfigureAwait(false);
|
||||
@ -196,6 +207,13 @@ namespace NadekoBot
|
||||
ConnectedServers = connectedServers,
|
||||
DateAdded = DateTime.Now
|
||||
});
|
||||
|
||||
statsSw.Stop();
|
||||
var clr = Console.ForegroundColor;
|
||||
Console.ForegroundColor = ConsoleColor.Blue;
|
||||
Console.WriteLine($"--------------\nCollecting stats finished in {statsSw.Elapsed.TotalSeconds}s\n-------------");
|
||||
Console.ForegroundColor = clr;
|
||||
statsSw.Reset();
|
||||
}
|
||||
catch
|
||||
{
|
||||
@ -205,9 +223,20 @@ namespace NadekoBot
|
||||
}
|
||||
}
|
||||
|
||||
private static ConcurrentDictionary<ulong, DateTime> commandTracker = new ConcurrentDictionary<ulong, DateTime>();
|
||||
|
||||
private void CommandService_CommandFinished(object sender, CommandEventArgs e)
|
||||
{
|
||||
DateTime dt;
|
||||
if (!commandTracker.TryGetValue(e.Message.Id, out dt))
|
||||
return;
|
||||
Console.WriteLine($">>COMMAND ENDED after *{(DateTime.UtcNow - dt).TotalSeconds}s*\nCmd: {e.Command.Text}\nMsg: {e.Message.Text}\nUsr: {e.User.Name} [{e.User.Id}]\nSrvr: {e.Server?.Name ?? "PRIVATE"} [{e.Server?.Id}]\n-----");
|
||||
}
|
||||
|
||||
private async void StatsCollector_RanCommand(object sender, CommandEventArgs e)
|
||||
{
|
||||
Console.WriteLine($">> Cmd: {e.Command.Text}\nMsg: {e.Message.Text}\nUsr: {e.User.Name} [{e.User.Id}]\nSrvr: {e.Server?.Name ?? "PRIVATE"} [{e.Server?.Id}]\n-----");
|
||||
commandTracker.TryAdd(e.Message.Id, DateTime.UtcNow);
|
||||
Console.WriteLine($">>COMMAND STARTED\nCmd: {e.Command.Text}\nMsg: {e.Message.Text}\nUsr: {e.User.Name} [{e.User.Id}]\nSrvr: {e.Server?.Name ?? "PRIVATE"} [{e.Server?.Id}]\n-----");
|
||||
#if !NADEKO_RELEASE
|
||||
await Task.Run(() =>
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user