//********************************************************************************
//*	ファイル名：DailyLogManagerS.h	
//*	用　　　途：ログ管理クラス
//*	備　　　考：シングルトンパターン
//*	履　　　歴：
//********************************************************************************
/****************************
*	 コンパイル環境設定		*
****************************/
#pragma once
/****************************
*	インクルードファイル	*
****************************/
#include "DailyLogManager.h"
#include "IniFile.h"
/****************************
*		 マクロ定数			*
****************************/
#define	LOG_PATH						_T("Log")										// ログ出力パス名
#define	LOG_SYSTEM_PATH					LOG_PATH _T("\\SystemLog")						// システムログパス名
#define	LOG_ERROR_PATH					LOG_PATH _T("\\ErrorLog" )						// エラーログパス名
#define	LOG_MINING_PATH					LOG_PATH _T("\\MiningLog" )						// マイニングログパス名
#define	LOG_SETTING1_PATH				LOG_PATH _T("\\Setting1Log" )					// 設定１ログパス名
#define	LOG_SETTING2_PATH				LOG_PATH _T("\\Setting2Log" )					// 設定２ログパス名
#define	LOG_SETTING3_PATH				LOG_PATH _T("\\Setting3Log" )					// 設定３ログパス名
#define	LOG_SETTING4_PATH				LOG_PATH _T("\\Setting4Log" )					// 設定４ログパス名
#define	LOG_PRODUCTINFO_PATH			LOG_PATH _T("\\ProductInfoLog" )				// 生産情報ログパス名

enum{
	LOG_SYSTEM	= 0		,
	LOG_ERROR			,
	LOG_MINING			,	// マイニング
	LOG_SETTING1		,	// 設定１
	LOG_SETTING2		,	// 設定２
	LOG_SETTING3		,	// 設定３
	LOG_SETTING4		,	// 設定4
	LOG_PRODUCTINFO		,	// 生産情報
	NOF_LOG
};

static LPCTSTR m_szLogName[NOF_LOG] =
{
	{ _T("SystemLog")			},
	{ _T("ErrorLog")			},
	{ _T("MiningLog")			},
	{ _T("Setting1Log")			},
	{ _T("Setting2Log")			},
	{ _T("Setting3Log")			},
	{ _T("Setting4Log")			},
	{ _T("ProductInfoLog")		},
};

static LPCTSTR m_szLogPath[NOF_LOG] =
{
	{ LOG_SYSTEM_PATH			},
	{ LOG_ERROR_PATH			},
	{ LOG_MINING_PATH			},
	{ LOG_SETTING1_PATH			},
	{ LOG_SETTING2_PATH			},
	{ LOG_SETTING3_PATH			},
	{ LOG_SETTING4_PATH			},
	{ LOG_PRODUCTINFO_PATH		},
};

/****************************
*		 構造体定義			*
****************************/
/****************************
*		 クラス定義			*
****************************/

class CDailyLogManagerS  : public CDailyLogManager
{
private:
	// コンストラクタ＆コピーコンストラクタ封じ
	CDailyLogManagerS(void);
	~CDailyLogManagerS(void);

	CDailyLogManagerS(const CDailyLogManagerS* p);
	CDailyLogManagerS(const CDailyLogManagerS& p);
	CDailyLogManagerS& operator =(const CDailyLogManagerS& p); 

public:

	// インスタンス取得（初回は生成）
	static CDailyLogManagerS& GetInstance(void);

	// 初期化
	void	Initialize( CString strFilePath );

	//ログ文字列をログバッファに追加
	BOOL	PrintLog( INT32 nLogIndex, TCHAR *szFmt, ... );
	BOOL	PrintLog( INT32 nLogIndex, CString &str );

	// ログ表示用メッセージセット
	BOOL	SetLogMessage	( INT32 nLogIndex, HWND hDspMessageWnd, INT32 nDspMessageID ) ;

	// ログID取得
	UINT	GetLogID		( INT32 nLogIndex ) { return m_uaLogID[nLogIndex] ; } ;

private:
	void	GetEnvPath( LPTSTR pszEnvPath ) ;

	//****** 作業フォルダパス名取得
	#define NO_BACKSLASH	FALSE
	CString	EnvPath( BOOL bAddLastSlash = TRUE ) ;

	//****** 作業フォルダパス名を含む絶対パス取得
	CString	AbsPath( LPCTSTR szRelativePath=NULL ) ;

private:
	CString				m_strFilePath ;
	tagParamDailyLog	m_taParamLog[NOF_LOG] ;
	UINT				m_uaLogID	[NOF_LOG] ;
};
/****************************
*		 関数　宣言			*
****************************/
/****************************
*		 変数　宣言			*
****************************/
