Comment ouvrir une session printemps JdbcTemplate des requêtes sql et des DB réponse en fichier journal à l'aide log4j2
Je suis à l'aide de printemps org.springframework.jdbc.de base.JdbcTemplate et org.springframework.jdbc.de base.simple.SimpleJdbcCall pour mes requêtes de base de données. Je suis à l'aide de log4j2.xml pour la journalisation. Je veux ouvrir une session tous mes requêtes sql et leur DB résultat en db.fichier journal.
J'ai essayé de l'utilisé à la suite d'un enregistreur de dans mon log4j2.xml fichier mais il n'a pas de journal tout en db.le fichier de log. J'ai essayé level="TRACE" et de level="debug", mais les deux ne fonctionne pas.
<RollingFile name="db" fileName="${sys:catalina.home}/logs/db.log"
filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/db-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout
pattern="%d{dd/MM/yyyy HH:mm:ss,SSS} [%X{cartID}] [%X{sessionId}] [%p] [%t] [%c] (%F:%L) - %m%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework.jdbc.core.JdbcTemplate" level="TRACE" additivity="false">
<Appender-Ref ref="db" />
</Logger>
Dans nos classes java nous sommes à l'aide de sql suivante
String sQuery = "select count(*) from impersonation_requests where ir_eid = ? and ir_tmp_userid = ?";
String value = template
.queryForObject(sQuery, new Object[] { passwordInfo.getEid(),
passwordInfo.getUserId() }, String.class);
Ici, var modèle est variable d'instance de org.springframework.jdbc.de base.JdbcTemplate
Je veux voir sQuery et de la valeur des entrées dans ma db.le fichier de log.
Pouvons-nous réaliser cela à l'aide de JdbcTemplate ou j'ai besoin de mettre en œuvre logger dans toutes mes classes DAO et journal sQuery et les valeurs dans chaque classe où je suis à l'aide de JdbcTemplate. Je veux éviter cette approche. S'il vous plaît suggérer.
OriginalL'auteur vivek | 2014-03-21
Vous devez vous connecter pour publier un commentaire.
Je dirais
name="org.springframework.jdbc.core.JdbcTemplate"
est très "stricte". Essayez cette catégorie:Ne log rien au moins pour
org.springframework
? Avez-vous de ce pont dans votre classpath: logging.apache.org/log4j/2.x/log4j-jcl ?J'ai essayé org.springframework mais rien de log dans le fichier. Désolé je n'ai pas "avez-vous de ce pont dans votre classpath". Dans mon code java, nous sommes à l'aide de slf4j journalisation et nous sommes à l'aide de slf4j pont jar pour se connecter avec log4j2.
mon pom dépendances. <la dépendance> <groupId > org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5< version> </dépendance> <dépendance> <groupId > org.slf4j</groupId> <artifactId>slf4j-ext</artifactId> <version>1.7.5< version> </dépendance> <dépendance> <groupId > org.apache.la journalisation.log4j.cartes</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.0-beta4< version> <champ>exécution</> </dépendance>
Il ne suffit pas: vous devez avoir un pont pour Commons Logging, depuis org.springframework l'utilise.
OriginalL'auteur Artem Bilan
Ce sera certainement le travail. debug et trace à la fois le niveau de travail. La seule chose c'est JDBCTemplate est l'utilisation commune d'enregistrement de l'API pour se connecter. Et si vous utilisez log4j dans votre application, vous devez ajouter de journalisation commune de pont pour la même chose.
Ajoutez ce qui suit dans votre pom.xml
OriginalL'auteur Gomti