Added database timing logging

This commit is contained in:
marcin.sciesinski
2019-10-08 00:32:48 -07:00
parent 3dca2704ea
commit 59830d9964
2 changed files with 52 additions and 14 deletions

View File

@@ -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);

View File

@@ -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");
}
});
}
}