43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
using Discord;
|
|
using Discord.Commands;
|
|
using Discord.WebSocket;
|
|
using System;
|
|
using System.IO;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace dotbot.Services
|
|
{
|
|
public class LoggingService
|
|
{
|
|
private readonly DiscordSocketClient _discord;
|
|
private readonly CommandService _commands;
|
|
|
|
private string _logDirectory { get; }
|
|
private string _logFile => Path.Combine(_logDirectory, $"{DateTime.UtcNow.ToString("yyyy-MM-dd")}.txt");
|
|
|
|
public LoggingService(DiscordSocketClient discord, CommandService commands)
|
|
{
|
|
_logDirectory = Path.Combine(AppContext.BaseDirectory, "logs");
|
|
|
|
_discord = discord;
|
|
_commands = commands;
|
|
|
|
_discord.Log += OnLogAsync;
|
|
_commands.Log += OnLogAsync;
|
|
}
|
|
|
|
private Task OnLogAsync(LogMessage msg)
|
|
{
|
|
if (!Directory.Exists(_logDirectory))
|
|
Directory.CreateDirectory(_logDirectory);
|
|
if (!File.Exists(_logFile))
|
|
File.Create(_logFile).Dispose();
|
|
|
|
string logText = $"{DateTime.UtcNow.ToString("hh:mm:ss")} [{msg.Severity}] {msg.Source}: {msg.Exception?.ToString() ?? msg.Message}";
|
|
File.AppendAllText(_logFile, logText + "\n");
|
|
|
|
return Console.Out.WriteLineAsync(logText);
|
|
}
|
|
}
|
|
}
|