Files
NewsCrawler/Util.cs
2018-01-01 23:01:49 +09:00

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;
}
}
}