回答編集履歴

6

修正

2019/10/01 03:03

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -430,59 +430,123 @@
430
430
 
431
431
 
432
432
 
433
- <appender name="console" class="org.apache.log4j.ConsoleAppender">
434
-
435
- <param name="Target" value="System.out" />
436
-
437
- <layout class="org.apache.log4j.PatternLayout">
438
-
439
- <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %l - %m%n" />
440
-
441
- </layout>
442
-
443
- </appender>
444
-
445
-
446
-
447
- <appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
448
-
449
- <param name="File" value="C:/var/logs/app.log" />
450
-
451
- <param name="Append" value="true" />
452
-
453
- <param name="Encoding" value="UTF-8" />
454
-
455
- <param name="DatePattern" value="'.'yyyy-MM-dd" />
456
-
457
- <layout class="org.apache.log4j.PatternLayout">
458
-
459
- <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %l - %m%n"/>
460
-
461
- </layout>
462
-
463
- </appender>
464
-
465
-
466
-
467
- <logger name="org.springframework.jdbc" additivity="false">
468
-
469
- <level value="debug" />
470
-
471
- <appender-ref ref="console" />
472
-
473
- </logger>
474
-
475
-
476
-
477
- <root>
478
-
479
- <level value ="info" />
480
-
481
- <appender-ref ref="console"/>
482
-
483
- </root>
484
-
485
-
433
+ <!-- Appenders -->
434
+
435
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
436
+
437
+ <param name="Target" value="System.out" />
438
+
439
+ <layout class="org.apache.log4j.PatternLayout">
440
+
441
+ <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n" />
442
+
443
+ </layout>
444
+
445
+ </appender>
446
+
447
+
448
+
449
+ <appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
450
+
451
+ <param name="File" value="C:/var/logs/app.log" />
452
+
453
+ <param name="Append" value="true" />
454
+
455
+ <param name="Encoding" value="UTF-8" />
456
+
457
+ <param name="DatePattern" value="'.'yyyy-MM-dd" />
458
+
459
+ <layout class="org.apache.log4j.PatternLayout">
460
+
461
+ <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n" />
462
+
463
+ </layout>
464
+
465
+ </appender>
466
+
467
+
468
+
469
+ <!-- Application Loggers -->
470
+
471
+ <logger name="jp.practice.address">
472
+
473
+ <level value="debug" />
474
+
475
+ <appender-ref ref="console" />
476
+
477
+ <appender-ref ref="file" />
478
+
479
+ </logger>
480
+
481
+
482
+
483
+ <!-- 3rdparty Loggers -->
484
+
485
+ <!--
486
+
487
+ <logger name="org.springframework.core" additivity="false">
488
+
489
+ <level value="info" />
490
+
491
+ <appender-ref ref="console" />
492
+
493
+ </logger>
494
+
495
+
496
+
497
+ <logger name="org.springframework.beans" additivity="false">
498
+
499
+ <level value="info" />
500
+
501
+ <appender-ref ref="console" />
502
+
503
+ </logger>
504
+
505
+
506
+
507
+ <logger name="org.springframework.context" additivity="false">
508
+
509
+ <level value="info" />
510
+
511
+ <appender-ref ref="console" />
512
+
513
+ </logger>
514
+
515
+
516
+
517
+ <logger name="org.springframework.web" additivity="false">
518
+
519
+ <level value="info" />
520
+
521
+ <appender-ref ref="console" />
522
+
523
+ </logger>
524
+
525
+ -->
526
+
527
+
528
+
529
+ <logger name="org.springframework.jdbc" additivity="false">
530
+
531
+ <level value="debug" />
532
+
533
+ <appender-ref ref="console" />
534
+
535
+ <appender-ref ref="file" />
536
+
537
+ </logger>
538
+
539
+
540
+
541
+ <!-- Root Logger -->
542
+
543
+ <root>
544
+
545
+ <level value ="info" />
546
+
547
+ <appender-ref ref="console" />
548
+
549
+ </root>
486
550
 
487
551
  </log4j:configuration>
488
552
 

5

追記

2019/10/01 03:02

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -413,3 +413,77 @@
413
413
 
414
414
 
415
415
  ただし、フレームワークやライブラリのログをdebugレベルで出力するようにすると大量のログが出力されるので通常はinfoレベルにしておくといいと思います。
416
+
417
+
418
+
419
+ log4j.xmlのサンプル
420
+
421
+
422
+
423
+ ```xml
424
+
425
+ <?xml version="1.0" encoding="UTF-8"?>
426
+
427
+ <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
428
+
429
+ <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true" >
430
+
431
+
432
+
433
+ <appender name="console" class="org.apache.log4j.ConsoleAppender">
434
+
435
+ <param name="Target" value="System.out" />
436
+
437
+ <layout class="org.apache.log4j.PatternLayout">
438
+
439
+ <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %l - %m%n" />
440
+
441
+ </layout>
442
+
443
+ </appender>
444
+
445
+
446
+
447
+ <appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
448
+
449
+ <param name="File" value="C:/var/logs/app.log" />
450
+
451
+ <param name="Append" value="true" />
452
+
453
+ <param name="Encoding" value="UTF-8" />
454
+
455
+ <param name="DatePattern" value="'.'yyyy-MM-dd" />
456
+
457
+ <layout class="org.apache.log4j.PatternLayout">
458
+
459
+ <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %l - %m%n"/>
460
+
461
+ </layout>
462
+
463
+ </appender>
464
+
465
+
466
+
467
+ <logger name="org.springframework.jdbc" additivity="false">
468
+
469
+ <level value="debug" />
470
+
471
+ <appender-ref ref="console" />
472
+
473
+ </logger>
474
+
475
+
476
+
477
+ <root>
478
+
479
+ <level value ="info" />
480
+
481
+ <appender-ref ref="console"/>
482
+
483
+ </root>
484
+
485
+
486
+
487
+ </log4j:configuration>
488
+
489
+ ```

4

修正

2019/09/30 11:15

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -370,7 +370,9 @@
370
370
 
371
371
  ```xml
372
372
 
373
- <logger name="org.springframework.jdbc" level="debug" additivity="false">
373
+ <logger name="org.springframework.jdbc" additivity="false">
374
+
375
+ <level value="debug" />
374
376
 
375
377
  <appender-ref ref="console" />
376
378
 

3

追記

2019/09/27 16:38

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -307,3 +307,107 @@
307
307
 
308
308
 
309
309
  削除しても接続できるのであれば、この記述は不要なので削除したままにしてください。
310
+
311
+
312
+
313
+ **補足 (2019/09/27)**
314
+
315
+
316
+
317
+ **依存関係の確認方法**
318
+
319
+
320
+
321
+ 成果物(warファイル)を展開する方法より、簡単に依存関係を確認する方法があります。
322
+
323
+ Eclipseでpom.xmlを開くとエディタの下部にタブが表示されていると思います。その中から図の1.の"依存関係階層"を選択してください。
324
+
325
+ ここにはアプリケーションが依存するライブラリの情報が表示されます。
326
+
327
+ 図の2.の"すべて縮小表示"のアイコンをクリックすると、pom.xmlに直接記述した依存関係が確認できます。(左側が依存関係をツリー状に表示したもの、右側が依存関係をフラットに表示したものです。)
328
+
329
+ ![イメージ説明](e41698c508d73f4c93f0f6f557724cd9.png)
330
+
331
+
332
+
333
+ さらに図の"mysql-connector-java : 8.0.16"をクリックすると、mysql-connector-javaの下に"protobuf-java : 3.6.1"が表示されますが、これはmysql-connector-java自身が依存するライブラリです。
334
+
335
+ ![イメージ説明](8a8a05b6971a494a56a3c2af252443d8.png)
336
+
337
+
338
+
339
+ つまり、アプリケーションはmysql-connector-javaに依存し、mysql-connector-javaはさらにprotobuf-javaに依存するという依存関係がわかります。
340
+
341
+
342
+
343
+ ```
344
+
345
+ アプリケーション ---依存---> mysqlconnector-java ---依存---> protobuf-java
346
+
347
+ ```
348
+
349
+
350
+
351
+ pom.xml上ではprotobuf-javaを依存関係に定義していませんが、mysql-connector-javaを依存関係に追加するだけで、それ以降の依存関係はmavenが自動的に解決し成果物に組み込んでくれます。
352
+
353
+ これを推移的依存関係の解決といいます。
354
+
355
+
356
+
357
+ **ログ出力のカスタマイズ**
358
+
359
+
360
+
361
+ ログを出力するにはロギングライブラリを使用します。ご質問のアプリケーションではlog4jが使われているようですので、log4j.xmlという設定ファイルを用意することでログ出力をカスタマイズできます。
362
+
363
+ フレームワークやライブラリもログを出力しているので、なにか問題が起きたときはログレベルをdebugなどにすることで原因を調査することができます。
364
+
365
+
366
+
367
+ たとえばJdbcTemplateのdebugレベルのログを出力するには、下記のようなロガーを宣言します。
368
+
369
+
370
+
371
+ ```xml
372
+
373
+ <logger name="org.springframework.jdbc" level="debug" additivity="false">
374
+
375
+ <appender-ref ref="console" />
376
+
377
+ </logger>
378
+
379
+ ```
380
+
381
+
382
+
383
+ JdbcTemplateを使ったデータベースアクセスが実行されると
384
+
385
+
386
+
387
+ ```java
388
+
389
+ List<Map<String, Object>> list = jdbcTemplate.queryForList("select * from user");
390
+
391
+ ```
392
+
393
+
394
+
395
+ 下記のようなデバッグログがコンソールに出力されます。下記の例では1行目のログで"select * from user"というselect文が実行されていることが確認できます。
396
+
397
+
398
+
399
+ ```
400
+
401
+ [DEBUG] [http-nio-8080-exec-3] JdbcTemplate - Executing SQL query [select * from user]
402
+
403
+ [DEBUG] [http-nio-8080-exec-3] DataSourceUtils - Fetching JDBC Connection from DataSource
404
+
405
+ [DEBUG] [http-nio-8080-exec-3] DriverManagerDataSource - Creating new JDBC DriverManager Connection to [jdbc:mysql://127.0.1:3306/test_db]
406
+
407
+ [DEBUG] [http-nio-8080-exec-3] DataSourceUtils - Returning JDBC Connection to DataSource
408
+
409
+ ```
410
+
411
+
412
+
413
+ ただし、フレームワークやライブラリのログをdebugレベルで出力するようにすると大量のログが出力されるので通常はinfoレベルにしておくといいと思います。

2

追記

2019/09/27 16:07

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -59,3 +59,251 @@
59
59
 
60
60
 
61
61
  これで接続できない場合はJDBC以外に原因があるかもしれませんので、プロジェクト情報の詳細を質問内容に追記して頂ければ、新しい回答が付くかもしれません。
62
+
63
+
64
+
65
+ **2019/09/20追記**
66
+
67
+
68
+
69
+ **■(1) MySQLサーバのバージョンの確認方法について**
70
+
71
+
72
+
73
+ MySQLサーバのバージョンを以下のコマンドで確認されたということですが、(※あながち間違いではありません)
74
+
75
+ これはmysql.exeというコマンドラインツールのバージョンを確認していることになりますので
76
+
77
+
78
+
79
+ ```
80
+
81
+ > mysql --version
82
+
83
+ ```
84
+
85
+
86
+
87
+ MySQLサーバのバージョンを確認するのであれば、以下の方法で確認するのが確実です。
88
+
89
+ コマンドプロンプトからmysqlでMySQLサーバにログインし
90
+
91
+
92
+
93
+ ```
94
+
95
+ > mysql --host=localhost --port=3306 --user=<ユーザ名> -p --database=<データベース名>
96
+
97
+ ```
98
+
99
+
100
+
101
+ 以下のコマンドを実行します
102
+
103
+
104
+
105
+ ```sql
106
+
107
+ > show variables like '%version%';
108
+
109
+ +--------------------------+------------------------------+
110
+
111
+ | Variable_name | Value |
112
+
113
+ +--------------------------+------------------------------+
114
+
115
+ | immediate_server_version | 999999 |
116
+
117
+ | innodb_version | 8.0.17 |
118
+
119
+ | original_server_version | 999999 |
120
+
121
+ | protocol_version | 10 |
122
+
123
+ | slave_type_conversions | |
124
+
125
+ | tls_version | TLSv1,TLSv1.1,TLSv1.2 |
126
+
127
+ | version | 8.0.17 |
128
+
129
+ | version_comment | MySQL Community Server - GPL |
130
+
131
+ | version_compile_machine | x86_64 |
132
+
133
+ | version_compile_os | Win64 |
134
+
135
+ | version_compile_zlib | 1.2.11 |
136
+
137
+ +--------------------------+------------------------------+
138
+
139
+ 11 rows in set (0.00 sec)
140
+
141
+ ```
142
+
143
+
144
+
145
+ または
146
+
147
+
148
+
149
+ ```sql
150
+
151
+ > select version();
152
+
153
+ +-----------+
154
+
155
+ | version() |
156
+
157
+ +-----------+
158
+
159
+ | 8.0.17 |
160
+
161
+ +-----------+
162
+
163
+ 1 row in set (0.00 sec)
164
+
165
+ ```
166
+
167
+
168
+
169
+ 以上のコマンドでMySQLサーバのバージョン(この例では8.0.17)を確認できます。
170
+
171
+
172
+
173
+ **■(2) MySQL JDBCドライバのバージョンの確認方法について**
174
+
175
+
176
+
177
+ > 確認方法:ユーザ変数PATHにC:\Program Files\MySQL\MySQL Shell 8.0\bin;が記載されており、その配下にmysql-connector-java-8.0.17.jarが存在する
178
+
179
+
180
+
181
+ MySQL Shellというクライアントツールをインストールされているようですが、ここにあるmysql-connector-javaはMySQL Shell自体が利用するためのものであると思います。
182
+
183
+ (MySQL Shell自体使ったことが無いので推測で記述していますのでご了承ください。)
184
+
185
+
186
+
187
+ このmysql-connector-java-8.0.17.jarを、Spring Frameworkで開発しているJavaアプリケーションのクラスパスに追加していないのであれば、このjarファイルはJavaアプリケーションとは無関係と言えます。
188
+
189
+ また、環境変数PATHとクラスパスは関係はありません。
190
+
191
+
192
+
193
+ MavenプロジェクトのJavaアプリケーションが使用するJDBC ドライバを確認するのであればpom.xmlの依存関係を見ます。
194
+
195
+ 以下の通り、追記して頂いたpom.xmlからMySQL JDBCドライバのバージョンが5.1.45であることがわかります。
196
+
197
+
198
+
199
+ ```
200
+
201
+ <!-- add -->
202
+
203
+ <dependency>
204
+
205
+ <groupId>org.springframework</groupId>
206
+
207
+ <artifactId>spring-jdbc</artifactId>
208
+
209
+ <version>4.2.3.RELEASE</version>
210
+
211
+ </dependency>
212
+
213
+
214
+
215
+ <dependency>
216
+
217
+ <groupId>mysql</groupId>
218
+
219
+ <artifactId>mysql-connector-java</artifactId>
220
+
221
+ <version>5.1.45</version>
222
+
223
+ </dependency>
224
+
225
+ <!-- add -->
226
+
227
+ ```
228
+
229
+
230
+
231
+ バージョン8のMySQL JDBCドライバを使うのであれば以下のように設定します。
232
+
233
+ mysql-connector-javaのバージョンは接続するMySQLサーバの同じバージョンに合わせておくといいと思います。
234
+
235
+ ※MySQLサーバのバージョンが8.0.16であればversionに8.0.16と指定します。
236
+
237
+
238
+
239
+ ```
240
+
241
+ <dependency>
242
+
243
+ <groupId>mysql</groupId>
244
+
245
+ <artifactId>mysql-connector-java</artifactId>
246
+
247
+ <version>8.0.16</version>
248
+
249
+ <scope>runtime</scope>
250
+
251
+ </dependency>
252
+
253
+ ```
254
+
255
+
256
+
257
+ ちなみにspring-jdbcのバージョンですが4.2.3.RELEASEである必要が無ければ、下記のようにspring-webmvcのバージョンと合わせておくべきだと思います。
258
+
259
+
260
+
261
+ ```
262
+
263
+ <dependency>
264
+
265
+ <groupId>org.springframework</groupId>
266
+
267
+ <artifactId>spring-jdbc</artifactId>
268
+
269
+ <version>4.3.7.RELEASE</version>
270
+
271
+ </dependency>
272
+
273
+ ```
274
+
275
+
276
+
277
+ 以上の設定が済んだら接続確認を行ってください。JDBC URLは最初の状態からはじめ
278
+
279
+ これでエラーが出るようであれば、上記記載のパターン(1)から(4)を順に試してみてください。
280
+
281
+
282
+
283
+ ```
284
+
285
+ jdbc:mysql://localhost:3306/unit02
286
+
287
+ ```
288
+
289
+
290
+
291
+ 以上の内容を行ってまだエラーがでる場合、spring-jdbcがMySQL JDBCドライバのバージョン8に対応していないかもしれません。
292
+
293
+ この場合は、すでに認証方式がmysql_native_passwordなアカウントで接続できているということなので、そちらの内容で自己解決としてください。
294
+
295
+
296
+
297
+ 接続が成功した場合、さらにコンテキストxmlの内容から下記の行を削除して再度接続確認を行ってください。
298
+
299
+
300
+
301
+ ```
302
+
303
+ <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" />
304
+
305
+ ```
306
+
307
+
308
+
309
+ 削除しても接続できるのであれば、この記述は不要なので削除したままにしてください。

1

修正

2019/09/20 10:44

投稿

rubytomato
rubytomato

スコア1752

test CHANGED
@@ -14,9 +14,9 @@
14
14
 
15
15
 
16
16
 
17
- ```
17
+ ```xml
18
18
 
19
- jdbc:mysql://localhost:3306/unit02?sslMode=disabled&allowPublicKeyRetrieval=true
19
+ jdbc:mysql://localhost:3306/unit02?sslMode=disabled&amp;allowPublicKeyRetrieval=true
20
20
 
21
21
  ```
22
22
 
@@ -26,9 +26,9 @@
26
26
 
27
27
 
28
28
 
29
- ```
29
+ ```xml
30
30
 
31
- jdbc:mysql://localhost:3306/unit02?sslMode=disabled&allowPublicKeyRetrieval=true&serverTimezone=Asia/Tokyo
31
+ jdbc:mysql://localhost:3306/unit02?sslMode=disabled&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=Asia/Tokyo
32
32
 
33
33
  ```
34
34
 
@@ -38,9 +38,9 @@
38
38
 
39
39
 
40
40
 
41
- ```
41
+ ```xml
42
42
 
43
- jdbc:mysql://localhost:3306/unit02?useSSL=false&allowPublicKeyRetrieval=true
43
+ jdbc:mysql://localhost:3306/unit02?useSSL=false&amp;allowPublicKeyRetrieval=true
44
44
 
45
45
  ```
46
46
 
@@ -50,9 +50,9 @@
50
50
 
51
51
 
52
52
 
53
- ```
53
+ ```xml
54
54
 
55
- jdbc:mysql://localhost:3306/unit02?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Tokyo
55
+ jdbc:mysql://localhost:3306/unit02?useSSL=false&amp;allowPublicKeyRetrieval=true&amp;serverTimezone=Asia/Tokyo
56
56
 
57
57
  ```
58
58