155 lines
3.4 KiB
C#
155 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace NewsCrawler
|
|
{
|
|
static class Util
|
|
{
|
|
public enum LOG_TYPE
|
|
{
|
|
DEBUG,
|
|
ERROR,
|
|
VERVOSE,
|
|
NEGATIVE,
|
|
POSITIVE,
|
|
POSITIVE_FORCE,
|
|
MANUAL_KEYWORD,
|
|
MANUAL_CODE,
|
|
DUPLICATED,
|
|
DENIAL,
|
|
BUY,
|
|
}
|
|
static string m_strLogFile = null;
|
|
static RichTextBox m_LogBox = null;
|
|
|
|
delegate void InsertLogDelegate(RichTextBox LogBox, LOG_TYPE enType, string strLog);
|
|
static InsertLogDelegate m_InsertLogDelegate = new InsertLogDelegate(InsertLog);
|
|
static object m_LogLock = new object();
|
|
|
|
public static void SetLogView(RichTextBox logBox)
|
|
{
|
|
m_LogBox = logBox;
|
|
}
|
|
|
|
public static void Clear()
|
|
{
|
|
m_LogBox = null;
|
|
}
|
|
|
|
static void InsertLog(RichTextBox LogBox, LOG_TYPE enType, string strLog)
|
|
{
|
|
if(LogBox.InvokeRequired)
|
|
{
|
|
LogBox.Invoke(m_InsertLogDelegate, LogBox, enType, strLog);
|
|
}
|
|
else
|
|
{
|
|
Color LogColor;
|
|
switch(enType)
|
|
{
|
|
case LOG_TYPE.DEBUG:
|
|
LogColor = Color.Gray;
|
|
break;
|
|
case LOG_TYPE.ERROR:
|
|
LogColor = Color.DarkRed;
|
|
break;
|
|
case LOG_TYPE.VERVOSE:
|
|
LogColor = Color.Black;
|
|
break;
|
|
case LOG_TYPE.NEGATIVE:
|
|
case LOG_TYPE.DENIAL:
|
|
case LOG_TYPE.DUPLICATED:
|
|
LogColor = Color.Blue;
|
|
break;
|
|
case LOG_TYPE.POSITIVE:
|
|
case LOG_TYPE.POSITIVE_FORCE:
|
|
case LOG_TYPE.MANUAL_KEYWORD:
|
|
case LOG_TYPE.BUY:
|
|
LogColor = Color.Red;
|
|
break;
|
|
default:
|
|
LogColor = Color.Black;
|
|
break;
|
|
}
|
|
|
|
LogBox.SelectionStart = LogBox.TextLength;
|
|
LogBox.SelectionLength = 0;
|
|
LogBox.SelectionColor = LogColor;
|
|
|
|
LogBox.AppendText(strLog);
|
|
|
|
LogBox.SelectionColor = LogBox.ForeColor;
|
|
|
|
LogBox.SelectionStart = LogBox.TextLength;
|
|
LogBox.ScrollToCaret();
|
|
}
|
|
}
|
|
|
|
public static void Log(LOG_TYPE enType, string strLog)
|
|
{
|
|
if(Directory.Exists(GetLogPath()) == false)
|
|
Directory.CreateDirectory(GetLogPath());
|
|
|
|
if(m_strLogFile == null)
|
|
{
|
|
string strToday = DateTime.Now.ToString("yyyy-MM-dd");
|
|
m_strLogFile = GetLogPath()+"/NewsCrawlerLog-"+strToday+".txt";
|
|
}
|
|
|
|
string strLogLevel = "["+enType+"] ";
|
|
string strTime = DateTime.Now.ToString("[HH:mm:ss:fff] ");
|
|
string strMessage = strTime+strLogLevel+strLog;
|
|
|
|
lock(m_LogLock)
|
|
File.AppendAllText(m_strLogFile, strMessage+Environment.NewLine, new UTF8Encoding(true));
|
|
if(m_LogBox != null)
|
|
InsertLog(m_LogBox, enType, strMessage+Environment.NewLine);
|
|
|
|
Console.WriteLine(strMessage);
|
|
}
|
|
|
|
public static bool IsDebugging()
|
|
{
|
|
#if DEBUG
|
|
return Debugger.IsAttached;
|
|
#else
|
|
return false;
|
|
#endif
|
|
}
|
|
|
|
public static string GetConfigPath()
|
|
{
|
|
string strPath = "";
|
|
if(IsDebugging())
|
|
strPath = Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory()));
|
|
else
|
|
strPath = Directory.GetCurrentDirectory();
|
|
strPath += "/configure";
|
|
|
|
if(Directory.Exists(strPath) == false)
|
|
Directory.CreateDirectory(strPath);
|
|
|
|
return strPath;
|
|
}
|
|
|
|
public static string GetLogPath()
|
|
{
|
|
string strPath = "";
|
|
if(IsDebugging())
|
|
strPath = Path.GetDirectoryName(Path.GetDirectoryName(Directory.GetCurrentDirectory()));
|
|
else
|
|
strPath = Directory.GetCurrentDirectory();
|
|
strPath += "/log";
|
|
|
|
return strPath;
|
|
}
|
|
}
|
|
}
|