質問編集履歴

2

自己解決

2018/04/09 14:29

投稿

a0841_1974
a0841_1974

スコア29

test CHANGED
File without changes
test CHANGED
@@ -163,3 +163,77 @@
163
163
  </appender>
164
164
 
165
165
  ```
166
+
167
+
168
+
169
+ Filter内での@Autowiredの使用方法が分からないので、
170
+
171
+ Mapper XML内のSQLを読み込んでログに出力するサービスを作成しました。
172
+
173
+ ※パラメータ部分の出力個所は、もう少し改善が必要です。
174
+
175
+
176
+
177
+ ```ここに言語を入力
178
+
179
+ @Service
180
+
181
+ public class SQLHelperService {
182
+
183
+ private static final Logger logger = LoggerFactory.getLogger("sql_logger");
184
+
185
+ @Autowired
186
+
187
+ ConfigService configService;
188
+
189
+
190
+
191
+ public void logger_sql(String path_file_name,String mapper_id,Object params)
192
+
193
+ throws ApplicationException {
194
+
195
+ try{
196
+
197
+ if(configService.isSql_log_hyouji_flg()){
198
+
199
+ String absolute_path = new File(".").getAbsoluteFile().getParent();
200
+
201
+ Configuration config = new Configuration();
202
+
203
+ InputStream fileStream = new FileInputStream(absolute_path+path_file_name);
204
+
205
+ XMLMapperBuilder parser = new XMLMapperBuilder(fileStream, config, "", config.getSqlFragments());
206
+
207
+ parser.parse();
208
+
209
+ MappedStatement st = config.getMappedStatement(mapper_id);
210
+
211
+ BoundSql sql = st.getBoundSql(params);
212
+
213
+ logger.info("[SQL]");
214
+
215
+ logger.info(sql.getSql());
216
+
217
+ logger.info("[Parameters]");
218
+
219
+ if(sql.getParameterObject() != null){
220
+
221
+ logger.info(sql.getParameterObject().toString());
222
+
223
+ }
224
+
225
+ }
226
+
227
+ }
228
+
229
+ catch (FileNotFoundException e) {
230
+
231
+ throw new ApplicationException(e);
232
+
233
+ }
234
+
235
+ }
236
+
237
+ }
238
+
239
+ ```

1

追記事項の記入

2018/04/09 14:29

投稿

a0841_1974
a0841_1974

スコア29

test CHANGED
File without changes
test CHANGED
@@ -55,3 +55,111 @@
55
55
  以上です。
56
56
 
57
57
  よろしくお願いいたします。
58
+
59
+
60
+
61
+ (追記)
62
+
63
+ 以下のようにフィルタを追加してlogback-spring.xmlの記述を変更しましたら、
64
+
65
+ フィルタは動くようになりましたが、
66
+
67
+ @AutowiredのconfigServiceがNULLとなってしまいます。
68
+
69
+
70
+
71
+ SQLLoggingFilter .java
72
+
73
+ ```ここに言語を入力
74
+
75
+ public class SQLLoggingFilter extends Filter<ILoggingEvent> {
76
+
77
+
78
+
79
+ @Autowired
80
+
81
+ ConfigService configService;
82
+
83
+
84
+
85
+ Level level;
86
+
87
+
88
+
89
+ @Override
90
+
91
+ public FilterReply decide(ILoggingEvent event) {
92
+
93
+ if (event.getMessage().contains("Preparing") || event.getMessage().contains("Parameters")) {
94
+
95
+ if(configService.isSql_log_hyouji_flg()){
96
+
97
+ return FilterReply.NEUTRAL;
98
+
99
+ }
100
+
101
+ else{
102
+
103
+ return FilterReply.DENY;
104
+
105
+ }
106
+
107
+ }
108
+
109
+ else{
110
+
111
+ return FilterReply.NEUTRAL;
112
+
113
+ }
114
+
115
+ }
116
+
117
+
118
+
119
+
120
+
121
+ public void setLevel(String level) {
122
+
123
+ this.level = Level.toLevel(level);
124
+
125
+ }
126
+
127
+
128
+
129
+ public void start() {
130
+
131
+ if (this.level != null) {
132
+
133
+ super.start();
134
+
135
+ }
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```
142
+
143
+ logback-spring.xml
144
+
145
+ ```ここに言語を入力
146
+
147
+ <appender name="SQL_LOGGER" class="ch.qos.logback.core.ConsoleAppender">
148
+
149
+ <target>System.out</target>
150
+
151
+ <encoder>
152
+
153
+ <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %highlight(%-5le) %cyan(%-40.40lo{36}) - %green(%msg) %n</pattern>
154
+
155
+ </encoder>
156
+
157
+ <filter class="com.apri.common.filter.SQLLoggingFilter">
158
+
159
+ <level>DEBUG</level>
160
+
161
+ </filter>
162
+
163
+ </appender>
164
+
165
+ ```