Added database timing logging
This commit is contained in:
@@ -9,6 +9,7 @@ import com.gempukku.lotro.common.ApplicationConfiguration;
|
||||
import com.gempukku.lotro.db.*;
|
||||
import com.gempukku.lotro.game.CardSets;
|
||||
import com.gempukku.lotro.game.LotroCardBlueprintLibrary;
|
||||
import com.gempukku.lotro.log.LoggingProxy;
|
||||
import com.gempukku.lotro.tournament.TournamentDAO;
|
||||
import com.gempukku.lotro.tournament.TournamentMatchDAO;
|
||||
import com.gempukku.lotro.tournament.TournamentPlayerDAO;
|
||||
@@ -25,40 +26,40 @@ public class DaoBuilder {
|
||||
LotroCardBlueprintLibrary library = new LotroCardBlueprintLibrary();
|
||||
library.init(new File(ApplicationConfiguration.getProperty("card.path")), (CardSets) objectMap.get(CardSets.class));
|
||||
objectMap.put(LotroCardBlueprintLibrary.class, library);
|
||||
objectMap.put(LeagueParticipationDAO.class, new DbLeagueParticipationDAO(dbAccess));
|
||||
objectMap.put(LeagueMatchDAO.class, new DbLeagueMatchDAO(dbAccess));
|
||||
objectMap.put(TournamentDAO.class, new DbTournamentDAO(dbAccess));
|
||||
objectMap.put(TournamentPlayerDAO.class, new DbTournamentPlayerDAO(dbAccess));
|
||||
objectMap.put(TournamentMatchDAO.class, new DbTournamentMatchDAO(dbAccess));
|
||||
objectMap.put(LeagueParticipationDAO.class, LoggingProxy.createLoggingProxy(LeagueParticipationDAO.class, new DbLeagueParticipationDAO(dbAccess)));
|
||||
objectMap.put(LeagueMatchDAO.class, LoggingProxy.createLoggingProxy(LeagueMatchDAO.class, new DbLeagueMatchDAO(dbAccess)));
|
||||
objectMap.put(TournamentDAO.class, LoggingProxy.createLoggingProxy(TournamentDAO.class, new DbTournamentDAO(dbAccess)));
|
||||
objectMap.put(TournamentPlayerDAO.class, LoggingProxy.createLoggingProxy(TournamentPlayerDAO.class, new DbTournamentPlayerDAO(dbAccess)));
|
||||
objectMap.put(TournamentMatchDAO.class, LoggingProxy.createLoggingProxy(TournamentMatchDAO.class, new DbTournamentMatchDAO(dbAccess)));
|
||||
|
||||
DbMerchantDAO dbMerchantDao = new DbMerchantDAO(dbAccess);
|
||||
MerchantDAO dbMerchantDao = LoggingProxy.createLoggingProxy(MerchantDAO.class, new DbMerchantDAO(dbAccess));
|
||||
CachedMerchantDAO merchantDao = new CachedMerchantDAO(dbMerchantDao);
|
||||
objectMap.put(MerchantDAO.class, merchantDao);
|
||||
|
||||
objectMap.put(LeagueDAO.class, new DbLeagueDAO(dbAccess));
|
||||
objectMap.put(GameHistoryDAO.class, new DbGameHistoryDAO(dbAccess));
|
||||
objectMap.put(LeagueDAO.class, LoggingProxy.createLoggingProxy(LeagueDAO.class, new DbLeagueDAO(dbAccess)));
|
||||
objectMap.put(GameHistoryDAO.class, LoggingProxy.createLoggingProxy(GameHistoryDAO.class, new DbGameHistoryDAO(dbAccess)));
|
||||
|
||||
DbIgnoreDAO dbIgnoreDao = new DbIgnoreDAO(dbAccess);
|
||||
IgnoreDAO dbIgnoreDao = LoggingProxy.createLoggingProxy(IgnoreDAO.class, new DbIgnoreDAO(dbAccess));
|
||||
CachedIgnoreDAO ignoreDao = new CachedIgnoreDAO(dbIgnoreDao);
|
||||
objectMap.put(IgnoreDAO.class, ignoreDao);
|
||||
|
||||
DbDeckDAO dbDeckDao = new DbDeckDAO(dbAccess, library);
|
||||
DeckDAO dbDeckDao = LoggingProxy.createLoggingProxy(DeckDAO.class, new DbDeckDAO(dbAccess, library));
|
||||
CachedDeckDAO deckDao = new CachedDeckDAO(dbDeckDao);
|
||||
objectMap.put(DeckDAO.class, deckDao);
|
||||
|
||||
DbCollectionDAO dbCollectionDao = new DbCollectionDAO(dbAccess, collectionSerializer);
|
||||
CollectionDAO dbCollectionDao = LoggingProxy.createLoggingProxy(CollectionDAO.class, new DbCollectionDAO(dbAccess, collectionSerializer));
|
||||
CachedCollectionDAO collectionDao = new CachedCollectionDAO(dbCollectionDao);
|
||||
objectMap.put(CollectionDAO.class, collectionDao);
|
||||
|
||||
DbPlayerDAO dbPlayerDao = new DbPlayerDAO(dbAccess);
|
||||
PlayerDAO dbPlayerDao = LoggingProxy.createLoggingProxy(PlayerDAO.class, new DbPlayerDAO(dbAccess));
|
||||
CachedPlayerDAO playerDao = new CachedPlayerDAO(dbPlayerDao);
|
||||
objectMap.put(PlayerDAO.class, playerDao);
|
||||
|
||||
DbTransferDAO dbTransferDao = new DbTransferDAO(dbAccess);
|
||||
TransferDAO dbTransferDao = LoggingProxy.createLoggingProxy(TransferDAO.class, new DbTransferDAO(dbAccess));
|
||||
CachedTransferDAO transferDao = new CachedTransferDAO(dbTransferDao);
|
||||
objectMap.put(TransferDAO.class, transferDao);
|
||||
|
||||
DbIpBanDAO dbIpBanDao = new DbIpBanDAO(dbAccess);
|
||||
IpBanDAO dbIpBanDao = LoggingProxy.createLoggingProxy(IpBanDAO.class, new DbIpBanDAO(dbAccess));
|
||||
CachedIpBanDAO ipBanDao = new CachedIpBanDAO(dbIpBanDao);
|
||||
objectMap.put(IpBanDAO.class, ipBanDao);
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.gempukku.lotro.log;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.lang.reflect.Proxy;
|
||||
|
||||
public class LoggingProxy {
|
||||
private static Logger logger = Logger.getLogger(LoggingProxy.class);
|
||||
private static final long ERROR_LEVEL = 3000;
|
||||
private static final long WARN_LEVEL = 1000;
|
||||
private static final long INFO_LEVEL = 500;
|
||||
private static final long DEBUG_LEVEL = 100;
|
||||
|
||||
public static <T> T createLoggingProxy(Class<T> clazz, T delegate) {
|
||||
final String simpleName = clazz.getSimpleName();
|
||||
return (T) Proxy.newProxyInstance(LoggingProxy.class.getClassLoader(), new Class[]{clazz},
|
||||
(proxy, method, args) -> {
|
||||
long start = System.currentTimeMillis();
|
||||
try {
|
||||
return method.invoke(delegate, args);
|
||||
} finally {
|
||||
long time = System.currentTimeMillis() - start;
|
||||
String name = method.getName();
|
||||
if (time >= ERROR_LEVEL)
|
||||
logger.error(simpleName + "::" + name + "(...) " + time + "ms");
|
||||
else if (time >= WARN_LEVEL)
|
||||
logger.warn(simpleName + "::" + name + "(...) " + time + "ms");
|
||||
else if (time >= INFO_LEVEL)
|
||||
logger.info(simpleName + "::" + name + "(...) " + time + "ms");
|
||||
else if (time >= DEBUG_LEVEL)
|
||||
logger.debug(simpleName + "::" + name + "(...) " + time + "ms");
|
||||
else
|
||||
logger.trace(simpleName + "::" + name + "(...) " + time + "ms");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user