Skip to content

Commit a09dfa7

Browse files
committed
Improve debug class and debugging startup
1 parent 29a4085 commit a09dfa7

File tree

2 files changed

+93
-25
lines changed

2 files changed

+93
-25
lines changed

FlagGame/src/syam/FlagGame/FlagGame.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import syam.FlagGame.Listeners.FGBlockListener;
4545
import syam.FlagGame.Listeners.FGEntityListener;
4646
import syam.FlagGame.Listeners.FGPlayerListener;
47+
import syam.FlagGame.Util.Debug;
4748
import syam.FlagGame.Util.DynmapHandler;
4849

4950
public class FlagGame extends JavaPlugin{
@@ -96,7 +97,7 @@ public class FlagGame extends JavaPlugin{
9697
*/
9798

9899
// ** Logger **
99-
public final static Logger log = Logger.getLogger("Minecraft");
100+
public final static Logger log = Logger.getLogger("FlagGame");
100101
public final static String logPrefix = "[FlagGame] ";
101102
public final static String msgPrefix = "&6[FlagGame] &f";
102103

@@ -113,6 +114,7 @@ public class FlagGame extends JavaPlugin{
113114
private ConfigurationManager config;
114115
private GameManager gm;
115116
private GameFileManager gfm;
117+
private Debug debug;
116118

117119
// ** Variable **
118120
// 存在するゲーム <String 一意のゲームID, Game>
@@ -133,6 +135,8 @@ public class FlagGame extends JavaPlugin{
133135
* プラグイン起動処理
134136
*/
135137
public void onEnable(){
138+
Debug.setStartupBeginTime();
139+
136140
instance = this;
137141
PluginManager pm = getServer().getPluginManager();
138142
config = new ConfigurationManager(this);
@@ -145,9 +149,15 @@ public void onEnable(){
145149
ex.printStackTrace();
146150
}
147151

148-
// プラグインフック
152+
// setup Debugger
153+
Debug.getInstance().init(log, logPrefix, "plugins/FlagGame/debug.log", getConfigs().isDebug);
154+
debug = Debug.getInstance();
155+
149156
// Vault
157+
debug.startTimer("vault");
150158
setupVault();
159+
debug.endTimer("vault");
160+
151161
// DeathNotifier
152162
Plugin p = pm.getPlugin("DeathNotifier");
153163
if (p != null){
@@ -170,27 +180,37 @@ public void onEnable(){
170180
registerCommands();
171181

172182
// データベース連携
183+
debug.startTimer("database");
173184
database = new Database(this);
174185
database.createStructure();
186+
debug.endTimer("database");
175187

176188
// マネージャ
189+
debug.startTimer("managers");
177190
gm = new GameManager(this);
178191
gfm = new GameFileManager(this); // 内部でDB使用
192+
debug.endTimer("managers");
179193

180194
// ゲームデータ読み込み
195+
debug.startTimer("load games");
181196
gfm.loadGames();
197+
debug.endTimer("load games");
182198

183199
// プレイヤー追加
184200
for (Player player : getServer().getOnlinePlayers()){
185201
PlayerManager.addPlayer(player);
186202
}
187203

188204
// dynmapフック
205+
debug.startTimer("dynmap");
189206
setupDynmap();
207+
debug.endTimer("dynmap");
190208

191209
// メッセージ表示
192210
PluginDescriptionFile pdfFile=this.getDescription();
193211
log.info("["+pdfFile.getName()+"] version "+pdfFile.getVersion()+" is enabled!");
212+
213+
debug.finishStartup();
194214
}
195215

196216
/**
@@ -262,6 +282,9 @@ private void setupVault(){
262282
}
263283
}
264284

285+
/**
286+
* Dynmapプラグインにフック
287+
*/
265288
private void setupDynmap(){
266289
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
267290
public void run(){

FlagGame/src/syam/FlagGame/Util/Debug.java

Lines changed: 68 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import java.io.IOException;
88
import java.text.DateFormat;
99
import java.util.Date;
10+
import java.util.logging.ConsoleHandler;
1011
import java.util.logging.FileHandler;
1112
import java.util.logging.Formatter;
13+
import java.util.logging.Handler;
1214
import java.util.logging.Level;
1315
import java.util.logging.LogRecord;
1416
import java.util.logging.Logger;
@@ -22,13 +24,17 @@
2224
*/
2325
public class Debug {
2426
private static Debug instance = null;
25-
private static long startup = 0L;
26-
private long timeLog = 0L;
2727

2828
private Logger log;
2929
private String logPrefix;
3030
private TextFileHandler logFile = null;
3131
private boolean debug = false;
32+
private Level oldLogLevel = null;
33+
34+
// timer
35+
private static boolean isStartup = true;
36+
private static long startup = 0L;
37+
private long timeLog = 0L;
3238

3339
/**
3440
* 初期化
@@ -90,6 +96,42 @@ public void debug(Object... args){
9096
}
9197
}
9298

99+
/**
100+
* コンソール出力するログレベルを変更
101+
* @param level
102+
*/
103+
private void setConsoleLevel(Level level){
104+
if (level == null) return;
105+
106+
Handler handler = getConsoleHandler(log);
107+
if (handler != null){
108+
handler.setLevel(level);
109+
}
110+
}
111+
112+
/**
113+
* コンソールハンドラを返す
114+
* @param log
115+
* @return
116+
*/
117+
private Handler getConsoleHandler(Logger log){
118+
// コンソールハンドラを返す
119+
Handler[] handlers = log.getHandlers();
120+
for (Handler h : handlers){
121+
if (h instanceof ConsoleHandler){
122+
return h;
123+
}
124+
}
125+
126+
// 親ロガーのコンソールハンドラを返す
127+
Logger parent = log.getParent();
128+
if (parent != null){
129+
return getConsoleHandler(parent);
130+
}else{
131+
return null;
132+
}
133+
}
134+
93135
/* getter / setter */
94136

95137
/**
@@ -107,8 +149,16 @@ public void setDebug(boolean isDebug){
107149
this.debug = isDebug;
108150

109151
if (isDebug){
152+
oldLogLevel = log.getLevel();
153+
log.setLevel(Level.FINE);
154+
setConsoleLevel(Level.FINE);
155+
110156
log.info(logPrefix+ "DEBUG MODE ENABLED!");
111157
}else{
158+
if (oldLogLevel != null){
159+
log.setLevel(oldLogLevel);
160+
setConsoleLevel(oldLogLevel);
161+
}
112162
log.info(logPrefix+ "DEBUG MODE DISABLED!");
113163
}
114164
}
@@ -160,40 +210,35 @@ public static void setStartupBeginTime(){
160210
if (startup <= 0L){
161211
startup = System.currentTimeMillis();
162212
}
213+
isStartup = true;
214+
}
215+
/**
216+
* プラグイン起動完了時に経過時間を出力する
217+
*/
218+
public void finishStartup(){
219+
isStartup = false;
220+
debug("[Timer] Total initialization time: " + (System.currentTimeMillis()-startup) + "ms");
163221
}
164222

165223
/**
166224
* デバッグ時刻計測開始
167225
* @param actionName
168226
* @param useStartup
169227
*/
170-
public void debugStartTimer(String actionName, boolean useStartup) {
228+
public void startTimer(String actionName) {
171229
timeLog = System.currentTimeMillis();
172230

173-
if (debug){
174-
if (useStartup){
175-
debug("[Startup Timer] starting " + actionName + " (t+" + (System.currentTimeMillis()-startup) + ")");
176-
}else{
177-
debug("[Startup Timer] starting " + actionName);
178-
}
179-
}
231+
if (isStartup){
232+
debug("[Timer] starting " + actionName + " (t+" + (System.currentTimeMillis()-startup) + ")");
233+
}else{
234+
debug("[Timer] starting " + actionName);
235+
}
180236
}
181-
182-
/**
183-
* デバッグ時刻計測開始
184-
* @param actionName
185-
*/
186-
public void debugStartTimer(String actionName){
187-
this.debugStartTimer(actionName, false);
188-
}
189-
190237
/**
191238
* デバッグ時刻計測終了
192239
* @param actionName
193240
*/
194-
public void debugEndTimer(String actionName){
195-
if (debug){
196-
debug("[Startup Timer] " + actionName + " finished in " + (System.currentTimeMillis()-timeLog) + "ms");
197-
}
241+
public void endTimer(String actionName){
242+
debug("[Timer] " + actionName + " finished in " + (System.currentTimeMillis()-timeLog) + "ms");
198243
}
199244
}

0 commit comments

Comments
 (0)