Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/index.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -27,4 +27,5 @@ include::how2entity/index.adoc[leveloffset=+1]
include::metamodel/index.adoc[leveloffset=+1]
include::transaction/index.adoc[leveloffset=+1]
include::event/index.adoc[leveloffset=+1]
include::showsql/index.adoc[leveloffset=+1]
include::release/index.adoc[leveloffset=+1]
23 changes: 22 additions & 1 deletion docs/setup/properties.adoc
Original file line numberDiff line numberDiff line change
Expand Up@@ -47,4 +47,25 @@
| ``sqlmapper.sql-template.encoding``
| ``UTF-8``
| SQLテンプレートのファイルの文字コード。
|===
|===

.SQLログ出力の設定
|===
| キー | デフォルト値 | 説明

| ``sqlmapper.show-sql.enabled``
| ``false``
| 実行するSQLをログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.log-level``
| ``DEBUG``
| SQLをログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。

| ``sqlmapper.show-sql.bind-param.enabled``
| ``false``
| 実行するSQLのバインド変数をログ出力するかどうか。``true`` のときログ出力します。

| ``sqlmapper.show-sql.bind-param.log-level``
| ``DEBUG``
| SQLのバインド変数をログ出力するときのログレベル。Slf4jのログレベル( `TRACE` / `DEBUG` / `INFO` / `WARN` / `ERROR` ) の何れかを指定できます。
|===
44 changes: 44 additions & 0 deletions docs/showsql/index.adoc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
[[showsql]]
= SQLのログ出力

* 実行するSQLをログ出力したい場合は、プロパティファイルにて機能の有効に設定します。
** 詳細は、<<available_properties,SQLログ出力の設定可能なプロパティ>> を参照して設定変更をしてください。
* クラス `com.github.mygreen.sqlmapper.core.query.SqlLogger` に対してログ出力設定を追加します。
** ログレベルは、プロパティファイルに定義した値と対応する必要があります。
** ログレベルの初期値は、`DEBUG` です。

.SQLのログ出力の有効化
[source,yaml]
----
sqlmapper:
show-sql:
enabled: true # ログ出力機能を有効にします。
bind-param:
enabled: true # バインド変数のログ出力機能を有効にします。
----

.SQLのロガー設定(例.logback.xml)
[source,xml]
----
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>.%d{HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{15}) - %msg %n</Pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>

<!-- SQLのログ出力設定 -->
<logger name="com.github.mygreen.sqlmapper.core.query.SqlLogger" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>

<root>
<level value="WARN" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>
----
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,6 +15,7 @@
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

import lombok.Getter;
Expand DownExpand Up@@ -87,6 +88,11 @@ public class SqlMapperContext {
*/
private SqlTemplateEngine sqlTemplateEngine;

/**
* SQLログ出力
*/
private SqlLogger sqlLogger;

/**
* トランザクションの伝搬タイプが {@link TransactionDefinition#PROPAGATION_REQUIRES_NEW} のトランザクションテンプレートを作成します。
* <p>ID生成用のトランザクションテンプレートとして使用します。
Expand Down
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
package com.github.mygreen.sqlmapper.core;

import com.github.mygreen.sqlmapper.core.util.NameUtils;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
* ストアドプロシージャ/ストアドファンクションの名称を指定するためのクラス。
* <p>スキーマ/カタログを指定する際に利用します。
*
* @version 0.4
* @since 0.3
* @author T.TSUCHIE
*
Expand DownExpand Up@@ -52,4 +55,13 @@ public StoredName withCatalog(String catalog) {
return this;
}

/**
* スキーマ名/カタログ名を考慮したフルネームを取得します。
* @since 0.4
* @return フルネームを取得します。
*/
public String toFullName() {
return NameUtils.tableFullName(name, catalog, schema);
}

}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
package com.github.mygreen.sqlmapper.core.config;

import org.slf4j.event.Level;

import lombok.Data;

/**
* SQLをログに出力する設定。
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public class ShowSqlProperties {

/** SQLのログ出力機能を有効にするかどうか。 */
private boolean enabled;

/** SQL出力時のログレベル */
private Level logLevel;

/** SQLのバインド変数に関するSQLの出力設定 */
private BindParamProperties bindParam;

/**
* SQLログ出力のバインドパラメータ設定
*
* @since 0.4
* @author T.TSUCHIE
*
*/
@Data
public static class BindParamProperties {

/** バインド変数を出力するかどうか */
private boolean enabled;

/** バインド変数出力時のログレベル */
private Level LogLevel;
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@

import javax.sql.DataSource;

import org.slf4j.event.Level;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
Expand All@@ -26,13 +27,15 @@
import com.github.mygreen.sqlmapper.core.SqlMapper;
import com.github.mygreen.sqlmapper.core.SqlMapperContext;
import com.github.mygreen.sqlmapper.core.audit.AuditingEntityListener;
import com.github.mygreen.sqlmapper.core.config.ShowSqlProperties.BindParamProperties;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.meta.EntityMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.PropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredParamMetaFactory;
import com.github.mygreen.sqlmapper.core.meta.StoredPropertyMetaFactory;
import com.github.mygreen.sqlmapper.core.naming.DefaultNamingRule;
import com.github.mygreen.sqlmapper.core.naming.NamingRule;
import com.github.mygreen.sqlmapper.core.query.SqlLogger;
import com.github.mygreen.sqlmapper.core.type.ValueTypeRegistry;

/**
Expand DownExpand Up@@ -93,6 +96,7 @@ public SqlMapperContext sqlMapperContext() {
context.setDataSource(dataSource());
context.setJdbcTemplateProperties(jdbcTemplateProperties());
context.setTransactionManager(transactionManager());
context.setSqlLogger(sqlLogger());

return context;

Expand DownExpand Up@@ -137,6 +141,22 @@ public TableIdGeneratorProperties tableIdGeneratorProperties() {
return prop;
}

@Bean
@Description("SQLのログ出力設定")
public ShowSqlProperties showSqlProperties() {

ShowSqlProperties prop = new ShowSqlProperties();
prop.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.enabled")));
prop.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.log-level").toUpperCase()));

BindParamProperties bindProp = new BindParamProperties();
bindProp.setEnabled(Boolean.parseBoolean(env.getProperty("sqlmapper.show-sql.bind-param.enabled")));
bindProp.setLogLevel(Level.valueOf(env.getProperty("sqlmapper.show-sql.bind-param.log-level").toUpperCase()));
prop.setBindParam(bindProp);

return prop;
}

@Bean
@Description("エンティティの対応クラスからメタ情報を作成するBean。")
public EntityMetaFactory entityMetaFactory() {
Expand DownExpand Up@@ -238,4 +258,10 @@ public AuditingEntityListener auditingEntityListener() {
return new AuditingEntityListener();
}

@Bean
@Description("SQLのログ出力処理")
public SqlLogger sqlLogger() {
return new SqlLogger(showSqlProperties());
}

}
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,15 +37,15 @@ public InsertClause(final int capacity) {
}

/**
* INTO句をSQLに変換します
* INTO句({@literal (col1, col2...)をSQLに変換します
* @return SQL
*/
public String toIntoSql() {
return intoSql.toString();
}

/**
* VALUES句をSQLに変換します。
* VALUES句({@literal values (exp1, exp2, ...)}
* @return SQL
*/
public String toValuesSql() {
Expand Down
Loading