90 lines
2.6 KiB
C#
Executable File
90 lines
2.6 KiB
C#
Executable File
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Net.Sockets;
|
|
using System.Text;
|
|
|
|
namespace Shadowsocks.Controller
|
|
{
|
|
public class Logging
|
|
{
|
|
public static string LogFile;
|
|
|
|
public static bool OpenLogFile()
|
|
{
|
|
try
|
|
{
|
|
string temppath = Path.GetTempPath();
|
|
LogFile = Path.Combine(temppath, "shadowsocks.log");
|
|
FileStream fs = new FileStream(LogFile, FileMode.Append);
|
|
StreamWriterWithTimestamp sw = new StreamWriterWithTimestamp(fs);
|
|
sw.AutoFlush = true;
|
|
Console.SetOut(sw);
|
|
Console.SetError(sw);
|
|
|
|
return true;
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
Console.WriteLine(e.ToString());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static void LogUsefulException(Exception e)
|
|
{
|
|
// just log useful exceptions, not all of them
|
|
if (e is SocketException)
|
|
{
|
|
SocketException se = (SocketException)e;
|
|
if (se.SocketErrorCode == SocketError.ConnectionAborted)
|
|
{
|
|
// closed by browser when sending
|
|
// normally happens when download is canceled or a tab is closed before page is loaded
|
|
}
|
|
else if (se.SocketErrorCode == SocketError.ConnectionReset)
|
|
{
|
|
// received rst
|
|
}
|
|
else if (se.SocketErrorCode == SocketError.NotConnected)
|
|
{
|
|
// close when not connected
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine(e);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine(e);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// Simply extended System.IO.StreamWriter for adding timestamp workaround
|
|
public class StreamWriterWithTimestamp : StreamWriter
|
|
{
|
|
public StreamWriterWithTimestamp(Stream stream) : base(stream)
|
|
{
|
|
}
|
|
|
|
private string GetTimestamp()
|
|
{
|
|
return "[" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "] ";
|
|
}
|
|
|
|
public override void WriteLine(string value)
|
|
{
|
|
base.WriteLine(GetTimestamp() + value);
|
|
}
|
|
|
|
public override void Write(string value)
|
|
{
|
|
base.Write(GetTimestamp() + value);
|
|
}
|
|
}
|
|
|
|
}
|