This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch past-M2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit a753878a79b42284030f6710588e0d3d93892483
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun Jun 14 17:10:48 2026 -0400

    Canonicalizing logger parameters
---
 .../apache/cayenne/gen/ClassGenerationAction.java  |  2 +-
 .../java/org/apache/cayenne/gen/PropertyUtils.java |  2 +-
 .../value/DefaultValueTransformerFactory.java      |  2 +-
 .../cayenne/dbsync/filter/NamePatternMatcher.java  |  2 +-
 .../dbsync/merge/context/EntityMergeSupport.java   |  4 ++--
 .../reverse/dbimport/DefaultDbImportAction.java    | 12 +++++------
 .../dbsync/reverse/dbload/AttributeProcessor.java  |  6 ++----
 .../dbsync/reverse/dbload/EntityLoader.java        |  6 +++---
 .../dbsync/reverse/dbload/ExportedKeyLoader.java   |  9 ++++-----
 .../reverse/dbload/LoggingDbLoaderDelegate.java    | 10 ++++------
 .../dbsync/reverse/dbload/PrimaryKeyLoader.java    |  2 +-
 .../reverse/dbload/ProcedureColumnLoader.java      |  6 +++---
 .../dbsync/reverse/dbload/ProcedureLoader.java     |  2 +-
 .../dbsync/reverse/dbload/RelationshipLoader.java  |  8 +++-----
 .../org/apache/cayenne/dbsync/merge/MergeCase.java |  2 +-
 .../CompatibilityDataChannelDescriptorLoader.java  |  2 +-
 .../upgrade/handlers/UpgradeHandler_V11.java       |  2 +-
 .../upgrade/handlers/UpgradeHandler_V9.java        |  2 +-
 .../org/apache/cayenne/access/DataRowStore.java    | 23 +++++-----------------
 .../org/apache/cayenne/access/DbGenerator.java     |  6 +++---
 .../org/apache/cayenne/access/ObjectResolver.java  |  6 ++----
 .../cayenne/access/jdbc/RowDescriptorBuilder.java  |  5 +++--
 .../access/types/SerializableTypeFactory.java      |  4 ++--
 .../cayenne/commitlog/DeletedDiffProcessor.java    |  2 +-
 .../configuration/runtime/DataDomainProvider.java  | 14 +++++--------
 .../runtime/JNDIDataSourceFactory.java             |  6 +++---
 .../xml/DataChannelChildrenHandler.java            |  2 +-
 .../configuration/xml/ObjEntityHandler.java        |  2 +-
 .../xml/XMLDataChannelDescriptorLoader.java        |  2 +-
 .../cayenne/datasource/DriverDataSource.java       |  4 +---
 .../org/apache/cayenne/exp/parser/ASTEqual.java    |  2 +-
 .../org/apache/cayenne/exp/parser/ASTObjPath.java  |  2 +-
 .../apache/cayenne/log/Slf4jJdbcEventLogger.java   | 10 +++++-----
 .../java/org/apache/cayenne/map/MappingCache.java  |  6 +++---
 .../apache/cayenne/tx/TransactionIsolationIT.java  |  4 ++--
 .../org/apache/cayenne/unit/DbSchemaManager.java   |  2 +-
 .../unit/datasource/DataSourceConfigLoader.java    |  2 +-
 .../platform/generic/GenericUIInitializer.java     |  2 +-
 .../modeler/platform/win/WinUIInitializer.java     |  2 +-
 .../modeler/project/ProjectFileChangeTracker.java  |  4 ++--
 .../apache/cayenne/modeler/toolkit/AppAction.java  |  2 +-
 .../apache/cayenne/modeler/toolkit/AppDialog.java  |  2 +-
 .../autorelationship/InferRelationshipsDialog.java |  4 ++--
 .../classpath/maven/MavenDependencyDialog.java     |  2 +-
 .../editor/query/SelectPropertiesPanel.java        |  2 +-
 .../modeler/ui/project/tree/ProjectTree.java       |  2 +-
 .../apache/cayenne/wocompat/EOModelProcessor.java  |  2 +-
 .../java/org/apache/cayenne/wocompat/EOQuery.java  |  2 +-
 48 files changed, 91 insertions(+), 120 deletions(-)

diff --git 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
index f8411cf49..93b081f82 100644
--- 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
+++ 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java
@@ -310,7 +310,7 @@ public class ClassGenerationAction {
 
         if (logger != null) {
             String label = templateType.isSuperclass() ? "superclass" : 
"class";
-            logger.info("Generating " + label + " file: " + 
outFile.getCanonicalPath());
+            logger.info("Generating {} file: {}", label, 
outFile.getCanonicalPath());
         }
 
         // return writer with specified encoding
diff --git 
a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/PropertyUtils.java 
b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/PropertyUtils.java
index 476d650ab..b8841402c 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/PropertyUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/PropertyUtils.java
@@ -383,7 +383,7 @@ public class PropertyUtils {
             }
         } catch (DIRuntimeException ex) {
             if(logger != null) {
-                logger.warn("WARN: Class not found: " + attrType + ". Will use 
default PropertyDescriptor.");
+                logger.warn("WARN: Class not found: {}. Will use default 
PropertyDescriptor.", attrType);
             }
             return PropertyDescriptor.defaultDescriptor();
         }
diff --git 
a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
 
b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
index 21bc082e5..568f829de 100644
--- 
a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
+++ 
b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/DefaultValueTransformerFactory.java
@@ -171,7 +171,7 @@ public class DefaultValueTransformerFactory implements 
ValueTransformerFactory {
             String attributeName = dbEntity.getName() + "." + a.getName();
             String msg = javaTypes.size() > 1 ? "ObjAttributes with different 
java types" : "No ObjAttributes";
             // Warn user about this problem as there is nothing else we can do
-            LOGGER.warn(msg + " bound to DbAttribute '" + attributeName + "', 
" + javaType + " type will be used.");
+            LOGGER.warn("{} bound to DbAttribute '{}', {} type will be used.", 
msg, attributeName, javaType);
             return javaType;
         }
 
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
index 43730f34c..0dad192d0 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/filter/NamePatternMatcher.java
@@ -82,7 +82,7 @@ public class NamePatternMatcher implements NameFilter {
             } catch (PatternSyntaxException e) {
 
                 if (logger != null) {
-                    logger.warn("Ignoring invalid pattern [" + patternString1 
+ "], reason: " + e.getMessage());
+                    logger.warn("Ignoring invalid pattern [{}], reason: {}", 
patternString1, e.getMessage());
                 }
             }
         }
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
index a5cb726ff..bc7cd5047 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/context/EntityMergeSupport.java
@@ -257,8 +257,8 @@ public class EntityMergeSupport {
             if (dbRelationship.getTargetEntityName() != null) {
                 boolean needGeneratedEntity = createObjRelationship(entity, 
dbRelationship, nameGenerator.objEntityName(targetEntity));
                 if (needGeneratedEntity) {
-                    LOGGER.warn("Can't find ObjEntity for " + 
dbRelationship.getTargetEntityName());
-                    LOGGER.warn("Db Relationship (" + dbRelationship + ") will 
have GUESSED Obj Relationship reflection. ");
+                    LOGGER.warn("Can't find ObjEntity for {}", 
dbRelationship.getTargetEntityName());
+                    LOGGER.warn("Db Relationship ({}) will have GUESSED Obj 
Relationship reflection. ", dbRelationship);
                 }
             }
         } else {
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
index fea39d502..a1444c95d 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbimport/DefaultDbImportAction.java
@@ -171,10 +171,8 @@ public class DefaultDbImportAction implements 
DbImportAction {
 
     protected DataMap loadDataMap(DbImportConfiguration config) throws 
Exception {
 
-        if (logger.isDebugEnabled()) {
-            logger.debug("DB connection: " + config.getDataSourceInfo());
-            logger.debug(String.valueOf(config));
-        }
+        logger.debug("DB connection: {}", config.getDataSourceInfo());
+        logger.debug("{}", config);
 
         DataNodeDescriptor dataNodeDescriptor = 
config.createDataNodeDescriptor();
         DataSource dataSource = 
dataSourceFactory.getDataSource(dataNodeDescriptor);
@@ -204,7 +202,7 @@ public class DefaultDbImportAction implements 
DbImportAction {
             String path = config.getTargetDataMap() == null ? "null" : 
config.getTargetDataMap().getAbsolutePath() + "'";
 
             logger.info("");
-            logger.info("Map file does not exist. Loaded db model will be 
saved into '" + path);
+            logger.info("Map file does not exist. Loaded db model will be 
saved into '{}", path);
 
             hasChanges = true;
             targetDataMap = newTargetDataMap(config);
@@ -303,7 +301,7 @@ public class DefaultDbImportAction implements 
DbImportAction {
             List<ObjRelationship> rels = new 
LinkedList<>(objEntity.getRelationships());
             for (ObjRelationship rel : rels) {
                 if (rel.getSourceEntity() == null || rel.getTargetEntity() == 
null) {
-                    logger.error("Incorrect obj relationship source or target 
entity is null: " + rel);
+                    logger.error("Incorrect obj relationship source or target 
entity is null: {}", rel);
 
                     objEntity.removeRelationship(rel.getName());
                 }
@@ -481,7 +479,7 @@ public class DefaultDbImportAction implements 
DbImportAction {
                 dataChannelDescriptor = new DataChannelDescriptor();
                 
dataChannelDescriptor.setName(getProjectNameFromFileName(config.getCayenneProject().getName()));
                 dataChannelDescriptor.setConfigurationSource(new 
URLResource(config.getCayenneProject().toURI().toURL()));
-                logger.info("Project file does not exist. New project will be 
saved into '" + config.getCayenneProject().getAbsolutePath());
+                logger.info("Project file does not exist. New project will be 
saved into '{}", config.getCayenneProject().getAbsolutePath());
             }
 
             dataChannelDescriptor.getDataMaps().add(dataMap);
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeProcessor.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeProcessor.java
index 044a528a8..0b6d661ef 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeProcessor.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/AttributeProcessor.java
@@ -68,10 +68,8 @@ class AttributeProcessor {
 
         String columnName = rs.getString("COLUMN_NAME");
         if (columnFilter == null || !columnFilter.isIncluded(columnName)) {
-            if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug("Skip column '" + entity.getName() + "." + 
columnName +
-                        "' (Path: " + entity.getCatalog() + "/" + 
entity.getSchema() + "; Filter: " + columnFilter + ")");
-            }
+            LOGGER.debug("Skip column '{}.{}' (Path: {}/{}; Filter: {})",
+                    entity.getName(), columnName, entity.getCatalog(), 
entity.getSchema(), columnFilter);
             return;
         }
 
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
index 7124078e3..fff4e52a5 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/EntityLoader.java
@@ -67,8 +67,8 @@ class EntityLoader extends PerCatalogAndSchemaLoader {
 
         if (!(catalog.name == null || catalog.name.equals(catalogName))
                 || !(schema.name == null || schema.name.equals(schemaName))) {
-            LOGGER.error(catalogName + "." + schema + "." + schemaName + " 
wrongly loaded for catalog/schema : "
-                    + catalog.name + "." + schema.name);
+            LOGGER.error("{}.{}.{} wrongly loaded for catalog/schema : {}.{}",
+                    catalogName, schema, schemaName, catalog.name, 
schema.name);
             return;
         }
 
@@ -82,7 +82,7 @@ class EntityLoader extends PerCatalogAndSchemaLoader {
     private void addDbEntityToMap(DetectedDbEntity table, DbLoadDataStore map) 
{
         DbEntity oldEnt = map.addDbEntitySafe(table);
         if (oldEnt != null) {
-            LOGGER.warn("Overwrite DbEntity: " + oldEnt.getName());
+            LOGGER.warn("Overwrite DbEntity: {}", oldEnt.getName());
             delegate.dbEntityRemoved(oldEnt);
         }
         delegate.dbEntityAdded(table);
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyLoader.java
index ba38c4df9..8d6db95ec 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ExportedKeyLoader.java
@@ -45,9 +45,8 @@ class ExportedKeyLoader extends PerEntityLoader {
 
     @Override
     boolean catchException(DbEntity entity, SQLException ex) {
-        LOGGER.info("Error getting relationships for '"
-                + entity.getCatalog() + "." + entity.getSchema()
-                + "', ignoring. " + ex.getMessage(), ex);
+        LOGGER.info("Error getting relationships for '{}.{}', ignoring. {}",
+                entity.getCatalog(), entity.getSchema(), ex.getMessage(), ex);
         return true;
     }
 
@@ -62,13 +61,13 @@ class ExportedKeyLoader extends PerEntityLoader {
 
         DbEntity pkEntity = map.getDbEntity(key.getPk().getTable());
         if (!key.getPk().validateEntity(pkEntity)) {
-            LOGGER.info("Skip relation: '" + key + "' because table '" + 
key.getPk().getTable() + "' is not found or in different catalog/schema");
+            LOGGER.info("Skip relation: '{}' because table '{}' is not found 
or in different catalog/schema", key, key.getPk().getTable());
             return;
         }
 
         DbEntity fkEntity = map.getDbEntity(key.getFk().getTable());
         if (!key.getFk().validateEntity(fkEntity)) {
-            LOGGER.info("Skip relation: '" + key + "' because table '" + 
key.getFk().getTable() + "' is not found or in different catalog/schema");
+            LOGGER.info("Skip relation: '{}' because table '{}' is not found 
or in different catalog/schema", key, key.getFk().getTable());
             return;
         }
 
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/LoggingDbLoaderDelegate.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/LoggingDbLoaderDelegate.java
index ed550724a..2cf66a4ce 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/LoggingDbLoaderDelegate.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/LoggingDbLoaderDelegate.java
@@ -35,26 +35,24 @@ public class LoggingDbLoaderDelegate extends 
DefaultDbLoaderDelegate {
 
     @Override
     public void dbEntityAdded(DbEntity entity) {
-        logger.info("  Table: " + entity.getFullyQualifiedName());
+        logger.info("  Table: {}", entity.getFullyQualifiedName());
     }
 
     @Override
     public void dbEntityRemoved(DbEntity entity) {
-        logger.info("  Table removed: " + entity.getFullyQualifiedName());
+        logger.info("  Table removed: {}", entity.getFullyQualifiedName());
     }
 
     @Override
     public boolean dbRelationship(DbEntity entity) {
-        if (logger.isDebugEnabled()) {
-            logger.debug("    Relationships for " + 
entity.getFullyQualifiedName());
-        }
+        logger.debug("    Relationships for {}", 
entity.getFullyQualifiedName());
 
         return true;
     }
 
     @Override
     public boolean dbRelationshipLoaded(DbEntity entity, DbRelationship 
relationship) {
-        logger.info("    " + relationship);
+        logger.info("    {}", relationship);
 
         return true;
     }
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/PrimaryKeyLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/PrimaryKeyLoader.java
index 36938ef4b..b5c56d680 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/PrimaryKeyLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/PrimaryKeyLoader.java
@@ -50,7 +50,7 @@ class PrimaryKeyLoader extends PerEntityLoader {
             // why an attribute might be null is not quiet clear
             // but there is a bug report 731406 indicating that it is
             // possible so just print the warning, and ignore
-            LOGGER.warn("Can't locate attribute for primary key: " + 
columnName);
+            LOGGER.warn("Can't locate attribute for primary key: {}", 
columnName);
             return;
         }
 
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
index 263b3dd5d..c50425b71 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureColumnLoader.java
@@ -77,17 +77,17 @@ public class ProcedureColumnLoader extends 
PerCatalogAndSchemaLoader {
         // skip ResultSet columns, as they are not described in Cayenne 
procedures yet...
         short type = rs.getShort("COLUMN_TYPE");
         if (type == DatabaseMetaData.procedureColumnResult) {
-            LOGGER.debug("skipping ResultSet column: " + key + "." + 
columnName);
+            LOGGER.debug("skipping ResultSet column: {}.{}", key, columnName);
             return null;
         }
 
         if (columnName == null || columnName.isEmpty()) {
             if (type == DatabaseMetaData.procedureColumnReturn) {
-                LOGGER.debug("null column name, assuming result column: " + 
key);
+                LOGGER.debug("null column name, assuming result column: {}", 
key);
                 columnName = "_return_value";
                 procedure.setReturningValue(true);
             } else {
-                LOGGER.info("invalid null column name, skipping column : " + 
key);
+                LOGGER.info("invalid null column name, skipping column : {}", 
key);
                 return null;
             }
         }
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureLoader.java
index 703fd3f78..3238561aa 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/ProcedureLoader.java
@@ -55,7 +55,7 @@ public class ProcedureLoader extends 
PerCatalogAndSchemaLoader {
         PatternFilter filter = 
config.getFiltersConfig().proceduresFilter(catalog.name, schema.name);
         String name = rs.getString("PROCEDURE_NAME");
         if (!filter.isIncluded(name)) {
-            LOGGER.info("skipping Cayenne PK procedure: " + name);
+            LOGGER.info("skipping Cayenne PK procedure: {}", name);
             return;
         }
 
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
index fdd2899b1..855515729 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/dbload/RelationshipLoader.java
@@ -52,9 +52,7 @@ public class RelationshipLoader extends AbstractLoader {
         }
 
         for (Map.Entry<String, Set<ExportedKey>> entry : 
map.getExportedKeysEntrySet()) {
-            if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug("Process keys for: " + entry.getKey());
-            }
+            LOGGER.debug("Process keys for: {}", entry.getKey());
 
             Set<ExportedKey> exportedKeys = entry.getValue();
             ExportedKey key = exportedKeys.iterator().next();
@@ -171,13 +169,13 @@ public class RelationshipLoader extends AbstractLoader {
             // skip invalid joins...
             DbAttribute pkAtt = pkEntity.getAttribute(pkName);
             if (pkAtt == null) {
-                LOGGER.info("no attribute for declared primary key: " + 
pkName);
+                LOGGER.info("no attribute for declared primary key: {}", 
pkName);
                 continue;
             }
 
             DbAttribute fkAtt = fkEntity.getAttribute(fkName);
             if (fkAtt == null) {
-                LOGGER.info("no attribute for declared foreign key: " + 
fkName);
+                LOGGER.info("no attribute for declared foreign key: {}", 
fkName);
                 continue;
             }
 
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
index 37dad13cb..adcaf1037 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
@@ -276,7 +276,7 @@ public abstract class MergeCase {
             try {
                 executeSql(sql);
             } catch (Exception e) {
-                LOGGER.info("Exception dropping table " + tableName + ", 
probably abscent..");
+                LOGGER.info("Exception dropping table {}, probably abscent..", 
tableName);
             }
         }
     }
diff --git 
a/cayenne-project-compatibility/src/main/java/org/apache/cayenne/project/compatibility/configuration/CompatibilityDataChannelDescriptorLoader.java
 
b/cayenne-project-compatibility/src/main/java/org/apache/cayenne/project/compatibility/configuration/CompatibilityDataChannelDescriptorLoader.java
index befea26f4..85b48a79b 100644
--- 
a/cayenne-project-compatibility/src/main/java/org/apache/cayenne/project/compatibility/configuration/CompatibilityDataChannelDescriptorLoader.java
+++ 
b/cayenne-project-compatibility/src/main/java/org/apache/cayenne/project/compatibility/configuration/CompatibilityDataChannelDescriptorLoader.java
@@ -97,7 +97,7 @@ public class CompatibilityDataChannelDescriptorLoader extends 
XMLDataChannelDesc
             throw new ConfigurationException("Unable to upgrade " + 
configurationURL);
         }
 
-        LOGGER.info("Loading XML configuration resource from " + 
configurationURL);
+        LOGGER.info("Loading XML configuration resource from {}", 
configurationURL);
 
         final DataChannelDescriptor descriptor = new DataChannelDescriptor();
         descriptor.setConfigurationSource(configurationResource);
diff --git 
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
 
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
index a22d746b6..bea1ec08f 100644
--- 
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
+++ 
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V11.java
@@ -289,7 +289,7 @@ public class UpgradeHandler_V11 implements UpgradeHandler {
             } catch (NoSuchFileException e) {
                 return "The template " + path + " was not found during the 
project upgrade. Use the template editor in Cayenne modeler to set the 
template";
             } catch (IOException e) {
-                LOGGER.warn("Can't read the file: " + path, e);
+                LOGGER.warn("Can't read the file: {}", path, e);
                 return "Can't read the file: " + path + e.getMessage();
             }
         } else {
diff --git 
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V9.java
 
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V9.java
index 59a06b405..b6836e6d5 100644
--- 
a/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V9.java
+++ 
b/cayenne-project/src/main/java/org/apache/cayenne/project/upgrade/handlers/UpgradeHandler_V9.java
@@ -67,7 +67,7 @@ public class UpgradeHandler_V9 implements UpgradeHandler {
                 File file = new File(directoryPath + "/" + reFileName);
                 if (file.exists()) {
                     if(!file.delete()) {
-                        LOGGER.warn("Can't delete file " + file);
+                        LOGGER.warn("Can't delete file {}", file);
                     }
                 }
                 dataMap.removeChild(reNode);
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DataRowStore.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DataRowStore.java
index 49f935306..992f6beba 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/DataRowStore.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/DataRowStore.java
@@ -101,9 +101,7 @@ public class DataRowStore implements Serializable {
         // expiration time is never used actually
         maxSize = properties.getInt(Constants.SNAPSHOT_CACHE_SIZE_PROPERTY, 
SNAPSHOT_CACHE_SIZE_DEFAULT);
 
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("DataRowStore property " + 
Constants.SNAPSHOT_CACHE_SIZE_PROPERTY + " = " + maxSize);
-        }
+        LOGGER.debug("DataRowStore property {} = {}", 
Constants.SNAPSHOT_CACHE_SIZE_PROPERTY, maxSize);
 
         this.snapshots = new ConcurrentLinkedHashMap.Builder<ObjectId, 
DataRow>()
                 .maximumWeightedCapacity(maxSize)
@@ -290,9 +288,7 @@ public class DataRowStore implements Serializable {
             return;
         }
 
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("remote event: " + event);
-        }
+        LOGGER.debug("remote event: {}", event);
 
         Collection<ObjectId> deletedSnapshotIds = event.getDeletedIds();
         Collection<ObjectId> invalidatedSnapshotIds = 
event.getInvalidatedIds();
@@ -401,15 +397,8 @@ public class DataRowStore implements Serializable {
                     // no good options exist to tell how to merge the two.
                     if (oldSnapshot.getVersion() != 
newSnapshot.getReplacesVersion()) {
 
-                        // snapshots can be huge potentially.. so print them 
only if the
-                        // user is expecting them to be printed
-                        if (LOGGER.isDebugEnabled()) {
-                            LOGGER
-                                    .debug("snapshot version changed, don't 
know what to do... Old: "
-                                            + oldSnapshot
-                                            + ", New: "
-                                            + newSnapshot);
-                        }
+                        LOGGER.debug("snapshot version changed, don't know 
what to do... Old: {}, New: {}",
+                                oldSnapshot, newSnapshot);
 
                         forgetSnapshot(key);
                         continue;
@@ -469,9 +458,7 @@ public class DataRowStore implements Serializable {
                     invalidatedSnapshotIDs,
                     indirectlyModifiedIds);
 
-            if (LOGGER.isDebugEnabled()) {
-                LOGGER.debug("postSnapshotsChangeEvent: " + event);
-            }
+            LOGGER.debug("postSnapshotsChangeEvent: {}", event);
 
             // synchronously notify listeners; leaving it up to the listeners 
to
             // register as "non-blocking" if needed.
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DbGenerator.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DbGenerator.java
index 022cc367b..a63d370f0 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/DbGenerator.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/DbGenerator.java
@@ -478,7 +478,7 @@ public class DbGenerator {
 
                        // tables with no columns are not included
                        if (nextEntity.getAttributes().size() == 0) {
-                               LOGGER.info("Skipping entity with no 
attributes: " + nextEntity.getName());
+                               LOGGER.info("Skipping entity with no 
attributes: {}", nextEntity.getName());
                                continue;
                        }
 
@@ -491,8 +491,8 @@ public class DbGenerator {
                        boolean invalidAttributes = false;
                        for (final DbAttribute attr : 
nextEntity.getAttributes()) {
                                if (attr.getType() == TypesMapping.NOT_DEFINED) 
{
-                                       LOGGER.info("Skipping entity, attribute 
type is undefined: " + nextEntity.getName() + "."
-                                                       + attr.getName());
+                                       LOGGER.info("Skipping entity, attribute 
type is undefined: {}.{}", nextEntity.getName(),
+                                                       attr.getName());
                                        invalidAttributes = true;
                                        break;
                                }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/ObjectResolver.java 
b/cayenne/src/main/java/org/apache/cayenne/access/ObjectResolver.java
index 1f635aa08..c9ac306cb 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/ObjectResolver.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/ObjectResolver.java
@@ -279,10 +279,8 @@ class ObjectResolver {
 
                        // null either means a bug in Cayenne (e.g. CAY-2101) 
or the inheritance qualifiers are messed up
                        if(entityName == null) {
-                               if(LOGGER.isWarnEnabled()) {
-                                       LOGGER.warn("** Null entity name for 
DataRow, can't resolve sub descriptor for {}",
-                                                       
descriptor.getEntity().getName());
-                               }
+                               LOGGER.warn("** Null entity name for DataRow, 
can't resolve sub descriptor for {}",
+                                               
descriptor.getEntity().getName());
                                return descriptor;
                        }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
index 1aca46cfa..3068b2c83 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
@@ -138,8 +138,9 @@ public class RowDescriptorBuilder {
         }
 
         if(validateDuplicateColumnNames && !duplicates.isEmpty()) {
-            LOGGER.warn("Found duplicated columns '" + String.join("', '", 
duplicates) + "' in row descriptor. " +
-                    "This can lead to errors when converting result to 
persistent objects.");
+            LOGGER.warn("Found duplicated columns '{}' in row descriptor. " +
+                    "This can lead to errors when converting result to 
persistent objects.",
+                    String.join("', '", duplicates));
         }
 
         if (outputLen < rsLen) {
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/types/SerializableTypeFactory.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/types/SerializableTypeFactory.java
index e1d5ff51e..48612ceda 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/types/SerializableTypeFactory.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/types/SerializableTypeFactory.java
@@ -45,8 +45,8 @@ class SerializableTypeFactory implements ExtendedTypeFactory {
        }
 
        public ExtendedType getType(Class<?> objectClass) {
-               LOGGER.warn("Haven't found suitable ExtendedType for class '" + 
objectClass.getCanonicalName()
-                               + "'. Most likely you need to define a custom 
ExtendedType.");
+               LOGGER.warn("Haven't found suitable ExtendedType for class 
'{}'. Most likely you need to define a custom "
+                               + "ExtendedType.", 
objectClass.getCanonicalName());
 
                if (Serializable.class.isAssignableFrom(objectClass)) {
                        LOGGER.warn("SerializableType will be used for type 
conversion.");
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/commitlog/DeletedDiffProcessor.java 
b/cayenne/src/main/java/org/apache/cayenne/commitlog/DeletedDiffProcessor.java
index 5598787e4..edd5f329b 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/commitlog/DeletedDiffProcessor.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/commitlog/DeletedDiffProcessor.java
@@ -64,7 +64,7 @@ class DeletedDiffProcessor implements GraphChangeHandler {
                List<DataRow> rows = (List<DataRow>)result.firstList();
 
                if (rows.isEmpty()) {
-                       LOGGER.warn("No DB snapshot for object to be deleted, 
no changes will be recorded. ID: " + id);
+                       LOGGER.warn("No DB snapshot for object to be deleted, 
no changes will be recorded. ID: {}", id);
                        return;
                }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataDomainProvider.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataDomainProvider.java
index a5ce21452..cf8582d0c 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataDomainProvider.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataDomainProvider.java
@@ -170,7 +170,7 @@ public class DataDomainProvider implements 
Provider<DataDomain> {
         }
 
         if (defaultNode != null) {
-            LOGGER.info("setting DataNode '" + defaultNode.getName() + "' as 
default, used by all unlinked DataMaps");
+            LOGGER.info("setting DataNode '{}' as default, used by all 
unlinked DataMaps", defaultNode.getName());
 
             dataDomain.setDefaultNode(defaultNode);
         }
@@ -223,9 +223,7 @@ public class DataDomainProvider implements 
Provider<DataDomain> {
 
         long t0 = System.currentTimeMillis();
 
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("starting configuration loading: " + locations);
-        }
+        LOGGER.debug("starting configuration loading: {}", locations);
 
         DataChannelDescriptor[] descriptors = new 
DataChannelDescriptor[locations.size()];
 
@@ -243,8 +241,8 @@ public class DataDomainProvider implements 
Provider<DataDomain> {
 
             // no support for multiple configs yet, but this is not a hard 
error
             if (configurations.size() > 1) {
-                LOGGER.info("found " + configurations.size() + " 
configurations for " + location
-                        + ", will use the first one: " + 
configurationResource.getURL());
+                LOGGER.info("found {} configurations for {}, will use the 
first one: {}", configurations.size(),
+                        location, configurationResource.getURL());
             }
 
             ConfigurationTree<DataChannelDescriptor> tree = 
loader.load(configurationResource);
@@ -258,9 +256,7 @@ public class DataDomainProvider implements 
Provider<DataDomain> {
 
         long t1 = System.currentTimeMillis();
 
-        if (LOGGER.isDebugEnabled()) {
-            LOGGER.debug("finished configuration loading in " + (t1 - t0) + " 
ms.");
-        }
+        LOGGER.debug("finished configuration loading in {} ms.", (t1 - t0));
 
         return descriptorMerger.merge(descriptors);
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactory.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactory.java
index b7da7db66..cb7ea07a0 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactory.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactory.java
@@ -47,7 +47,7 @@ public class JNDIDataSourceFactory implements 
DataSourceFactory {
                try {
                        return lookupViaJNDI(location);
                } catch (Exception e) {
-                       LOGGER.info("*** failed JNDI lookup of DataSource at 
location: " + location, e);
+                       LOGGER.info("*** failed JNDI lookup of DataSource at 
location: {}", location, e);
                        throw new RuntimeException(e);
                }
        }
@@ -63,7 +63,7 @@ public class JNDIDataSourceFactory implements 
DataSourceFactory {
 
        DataSource lookupViaJNDI(String location) throws NamingException {
 
-               LOGGER.info("Connecting. JNDI path: " + location);
+               LOGGER.info("Connecting. JNDI path: {}", location);
 
                Context context = new InitialContext();
                DataSource dataSource;
@@ -75,7 +75,7 @@ public class JNDIDataSourceFactory implements 
DataSourceFactory {
                        dataSource = (DataSource) context.lookup(location);
                }
 
-               LOGGER.info("Found JNDI DataSource at location: " + location);
+               LOGGER.info("Found JNDI DataSource at location: {}", location);
 
                return dataSource;
        }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
index 67d244e1f..f52c6e6dd 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/DataChannelChildrenHandler.java
@@ -107,7 +107,7 @@ final class DataChannelChildrenHandler extends 
NamespaceAwareNestedTagHandler {
 
         Resource dataMapResource = 
baseResource.getRelativeResource(dataMapLocation);
 
-        LOGGER.info("Loading XML DataMap resource from " + 
dataMapResource.getURL());
+        LOGGER.info("Loading XML DataMap resource from {}", 
dataMapResource.getURL());
 
         DataMap dataMap = 
xmlDataChannelDescriptorLoader.dataMapLoader.load(dataMapResource);
         dataMap.setName(dataMapName);
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/ObjEntityHandler.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/ObjEntityHandler.java
index b1c43a461..707105655 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/ObjEntityHandler.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/ObjEntityHandler.java
@@ -205,7 +205,7 @@ public class ObjEntityHandler extends 
NamespaceAwareNestedTagHandler {
             try {
                 entity.setDeclaredQualifier(ExpressionFactory.exp(qualifier));
             } catch (ExpressionException ex) {
-                LOGGER.warn("Unable to parse entity " + entity.getName() + " 
qualifier", ex);
+                LOGGER.warn("Unable to parse entity {} qualifier", 
entity.getName(), ex);
             }
         }
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
index 243265d5a..a9e938610 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
@@ -77,7 +77,7 @@ public class XMLDataChannelDescriptorLoader implements 
DataChannelDescriptorLoad
 
         URL configurationURL = configurationResource.getURL();
 
-        LOGGER.info("Loading XML configuration resource from " + 
configurationURL);
+        LOGGER.info("Loading XML configuration resource from {}", 
configurationURL);
 
         final DataChannelDescriptor descriptor = new DataChannelDescriptor();
         descriptor.setConfigurationSource(configurationResource);
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/datasource/DriverDataSource.java 
b/cayenne/src/main/java/org/apache/cayenne/datasource/DriverDataSource.java
index 31a0e3af5..be9fb125f 100644
--- a/cayenne/src/main/java/org/apache/cayenne/datasource/DriverDataSource.java
+++ b/cayenne/src/main/java/org/apache/cayenne/datasource/DriverDataSource.java
@@ -120,9 +120,7 @@ public class DriverDataSource implements DataSource {
        }
 
        private void logConnect(String url, String userName, String password) {
-               if (LOGGER.isInfoEnabled()) {
-                       LOGGER.info("Connecting to '" + url + "' as '" + 
userName + "'");
-               }
+               LOGGER.info("Connecting to '{}' as '{}'", url, userName);
        }
 
        @Override
diff --git a/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTEqual.java 
b/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTEqual.java
index 2e4bc6561..e5b64d9c2 100644
--- a/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTEqual.java
+++ b/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTEqual.java
@@ -141,7 +141,7 @@ public class ASTEqual extends ConditionNode implements 
ValueInjector {
                        try {
                                path.injectValue(o, scalar.getValue());
                        } catch (Exception ex) {
-                               LOGGER.warn("Failed to inject value " + " on 
path " + path.getPath() + " to " + o, ex);
+                               LOGGER.warn("Failed to inject value on path {} 
to {}", path.getPath(), o, ex);
                        }
                }
        }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTObjPath.java 
b/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTObjPath.java
index 6dde8b44b..f86d5d5d2 100644
--- a/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTObjPath.java
+++ b/cayenne/src/main/java/org/apache/cayenne/exp/parser/ASTObjPath.java
@@ -119,7 +119,7 @@ public class ASTObjPath extends ASTPath {
                                        PropertyUtils.setProperty(source, 
firstSegment, value);
                                }
                        } catch (CayenneRuntimeException ex) {
-                               LOGGER.warn("Failed to inject value " + value + 
" on path " + getPath() + " to " + source, ex);
+                               LOGGER.warn("Failed to inject value {} on path 
{} to {}", value, getPath(), source, ex);
                        }
                }
        }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java 
b/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java
index 641811dcd..0b62d1a32 100644
--- a/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java
+++ b/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java
@@ -58,7 +58,7 @@ public class Slf4jJdbcEventLogger implements JdbcEventLogger {
        public void logGeneratedKey(DbAttribute attribute, Object value) {
                if (isLoggable()) {
                        String entity = attribute.getEntity().getName();
-                       LOGGER.info("Generated PK: " + entity + "." + 
attribute.getName() + " = " + value);
+                       LOGGER.info("Generated PK: {}.{} = {}", entity, 
attribute.getName(), value);
                }
        }
 
@@ -161,7 +161,7 @@ public class Slf4jJdbcEventLogger implements 
JdbcEventLogger {
 
                if (queryExecutionTimeLoggingThreshold > 0 && time > 
queryExecutionTimeLoggingThreshold) {
                        String message = "Query time exceeded threshold (" + 
time + " ms): ";
-                       LOGGER.warn(message + sql, new 
CayenneRuntimeException(message + "%s", sql));
+                       LOGGER.warn("{}{}", message, sql, new 
CayenneRuntimeException(message + "%s", sql));
                }
        }
 
@@ -179,17 +179,17 @@ public class Slf4jJdbcEventLogger implements 
JdbcEventLogger {
 
        @Override
        public void logBeginTransaction(String transactionLabel) {
-               LOGGER.info("--- " + transactionLabel);
+               LOGGER.info("--- {}", transactionLabel);
        }
 
        @Override
        public void logCommitTransaction(String transactionLabel) {
-               LOGGER.info("+++ " + transactionLabel);
+               LOGGER.info("+++ {}", transactionLabel);
        }
 
        @Override
        public void logRollbackTransaction(String transactionLabel) {
-               LOGGER.info("*** " + transactionLabel);
+               LOGGER.info("*** {}", transactionLabel);
        }
 
        @Override
diff --git a/cayenne/src/main/java/org/apache/cayenne/map/MappingCache.java 
b/cayenne/src/main/java/org/apache/cayenne/map/MappingCache.java
index 3306f1e2e..9a029808d 100644
--- a/cayenne/src/main/java/org/apache/cayenne/map/MappingCache.java
+++ b/cayenne/src/main/java/org/apache/cayenne/map/MappingCache.java
@@ -136,7 +136,7 @@ class MappingCache implements MappingNamespace {
                         } else {
                             // bad mapping? Or most likely some classloader
                             // issue
-                            LOGGER.warn("No super entity mapping for '" + 
superOEName + "'");
+                            LOGGER.warn("No super entity mapping for '{}'", 
superOEName);
                             continue;
                         }
                     }
@@ -161,8 +161,8 @@ class MappingCache implements MappingNamespace {
             CayenneMapEntry duplicate = dst.get(entry.getName());
             if(duplicate != null) {
                 DataMap parent = (DataMap) duplicate.getParent();
-                LOGGER.warn("Found duplicated name " + entry.getName()
-                        + " in datamaps " + srcMap.getName() + " and " + 
parent.getName());
+                LOGGER.warn("Found duplicated name {} in datamaps {} and {}",
+                        entry.getName(), srcMap.getName(), parent.getName());
             }
         }
     }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java 
b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
index 5224facee..855bceda8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
@@ -89,7 +89,7 @@ public class TransactionIsolationIT {
                         startSignal.countDown();
                     }
                     if(result != 0) {
-                        logger.error("First fetch returned " + result);
+                        logger.error("First fetch returned {}", result);
                         return false;
                     }
                     try {
@@ -100,7 +100,7 @@ public class TransactionIsolationIT {
                     }
 
                     result = 
ObjectSelect.query(Artist.class).selectCount(context);
-                    logger.info("Second fetch returned " + result);
+                    logger.info("Second fetch returned {}", result);
                     return result == 0;
                 }, descriptor);
             } catch (Exception ex) {
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
index 5df4846ab..ae4f5973a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
@@ -386,7 +386,7 @@ public class DbSchemaManager {
                             LOGGER.info(dropSql);
                             stmt.execute(dropSql);
                         } catch (SQLException sqe) {
-                            LOGGER.warn("Can't drop table " + ent.getName() + 
", ignoring...", sqe);
+                            LOGGER.warn("Can't drop table {}, ignoring...", 
ent.getName(), sqe);
                         }
                     }
                 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
index 20f0c8fb6..42e525954 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
@@ -67,7 +67,7 @@ public class DataSourceConfigLoader {
             throw new ConfigurationException("No DataSource descriptor for 
key: " + connectionName);
         }
 
-        LOGGER.info("loaded DataSource descriptor: " + descriptor);
+        LOGGER.info("loaded DataSource descriptor: {}", descriptor);
         return descriptor;
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericUIInitializer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericUIInitializer.java
index 5fbf70ea7..5552f05f2 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericUIInitializer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/generic/GenericUIInitializer.java
@@ -52,7 +52,7 @@ public class GenericUIInitializer implements UIInitializer {
             // override some default styles and colors
             overrideUIDefaults();
         } catch (Exception e) {
-            LOGGER.warn("Error installing L&F: " + DEFAULT_LAF_NAME, e);
+            LOGGER.warn("Error installing L&F: {}", DEFAULT_LAF_NAME, e);
         }
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinUIInitializer.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinUIInitializer.java
index f74fa24bf..a6abed501 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinUIInitializer.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/platform/win/WinUIInitializer.java
@@ -38,7 +38,7 @@ public class WinUIInitializer implements UIInitializer {
             // override some default styles and colors
             overrideUIDefaults();
         } catch (Exception e) {
-            LOGGER.warn("Error installing L&F: " + 
WindowsLookAndFeel.class.getName(), e);
+            LOGGER.warn("Error installing L&F: {}", 
WindowsLookAndFeel.class.getName(), e);
         }
     }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/project/ProjectFileChangeTracker.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/project/ProjectFileChangeTracker.java
index e16743fac..b5afe8f8b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/project/ProjectFileChangeTracker.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/project/ProjectFileChangeTracker.java
@@ -150,7 +150,7 @@ class ProjectFileChangeTracker extends Thread {
         try {
             files.put(location, new TrackedFile(location));
         } catch (SecurityException e) {
-            LOGGER.error("SecurityException adding file " + location, e);
+            LOGGER.error("SecurityException adding file {}", location, e);
         }
     }
 
@@ -169,7 +169,7 @@ class ProjectFileChangeTracker extends Thread {
             try {
                 fileExists = fi.getFile().exists();
             } catch (SecurityException e) {
-                LOGGER.error("SecurityException checking file " + 
fi.getFile().getPath(), e);
+                LOGGER.error("SecurityException checking file {}", 
fi.getFile().getPath(), e);
 
                 // we still process with other files
                 continue;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppAction.java
index 919e6c444..2b52e0523 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppAction.java
@@ -148,7 +148,7 @@ public abstract class AppAction extends AbstractAction {
         try {
             performAction(e);
         } catch (Throwable th) {
-            LOGGER.info("Action Exception: " + getValue(Action.DEFAULT), th);
+            LOGGER.info("Action Exception: {}", getValue(Action.DEFAULT), th);
             new ErrorDialog(app, "CayenneModeler Error", th).open();
         }
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
index c641aafe0..402476963 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/toolkit/AppDialog.java
@@ -107,7 +107,7 @@ public abstract class AppDialog extends JDialog {
      */
     protected void reportError(String title, Throwable t) {
         Throwable unwound = Util.unwindException(t);
-        LOGGER.info("Error in " + getClass().getName(), unwound);
+        LOGGER.info("Error in {}", getClass().getName(), unwound);
         JOptionPane.showMessageDialog(this, unwound.getMessage(), title, 
JOptionPane.ERROR_MESSAGE);
     }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
index 852ca506e..80c76a438 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/autorelationship/InferRelationshipsDialog.java
@@ -320,7 +320,7 @@ public class InferRelationshipsDialog extends ProjectDialog 
{
             return classLoader.loadClass(ObjectNameGenerator.class, 
strategyClass)
                     .getDeclaredConstructor().newInstance();
         } catch (Throwable th) {
-            LOGGER.error("Error in " + getClass().getName(), th);
+            LOGGER.error("Error in {}", getClass().getName(), th);
             JOptionPane.showMessageDialog(
                     this,
                     "Naming Strategy Initialization Error: " + th.getMessage(),
@@ -356,7 +356,7 @@ public class InferRelationshipsDialog extends ProjectDialog 
{
             strategyCombo.setModel(new DefaultComboBoxModel<>(
                     
NameGeneratorPreferences.getInstance().getLastUsedStrategies(app)));
         } catch (Throwable th) {
-            LOGGER.error("Error in " + getClass().getName(), th);
+            LOGGER.error("Error in {}", getClass().getName(), th);
             return;
         }
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
index 41221b45f..be3784f97 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/preferences/classpath/maven/MavenDependencyDialog.java
@@ -161,7 +161,7 @@ public class MavenDependencyDialog extends AppDialog {
             finalizeDownload(dstFile, "Url not found: " + srcUrl, false, 
false);
             return;
         } catch (Exception e) {
-            LOGGER.warn("Failed to download Maven dependency " + srcUrl, e);
+            LOGGER.warn("Failed to download Maven dependency {}", srcUrl, e);
             finalizeDownload(dstFile, "Unable to download file " + dstFile, 
false, true);
             return;
         }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/query/SelectPropertiesPanel.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/query/SelectPropertiesPanel.java
index 564164325..140f4a807 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/query/SelectPropertiesPanel.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/editor/query/SelectPropertiesPanel.java
@@ -216,7 +216,7 @@ public abstract class SelectPropertiesPanel extends JPanel {
                 session.fireQueryEvent(QueryEvent.ofChange(this, query));
             }
             catch (Exception ex) {
-                LOGGER.warn("Error setting property: " + property, ex);
+                LOGGER.warn("Error setting property: {}", property, ex);
             }
         }
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/tree/ProjectTree.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/tree/ProjectTree.java
index 1c84c2ae7..0161a7180 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/tree/ProjectTree.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ui/project/tree/ProjectTree.java
@@ -227,7 +227,7 @@ public class ProjectTree extends JTree
 
             return (value != null) ? 
String.valueOf(PropertyUtils.getProperty(value, "name")) : "";
         } catch (Exception e) {
-            LOGGER.warn("Exception reading property 'name', class " + 
value.getClass().getName(), e);
+            LOGGER.warn("Exception reading property 'name', class {}", 
value.getClass().getName(), e);
             return "";
         }
     }
diff --git 
a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
 
b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
index 9edda6469..fc22630da 100644
--- 
a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
+++ 
b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOModelProcessor.java
@@ -721,7 +721,7 @@ public class EOModelProcessor {
                        try {
                                flatRel.setDbRelationshipPath(targetPath);
                        } catch (ExpressionException ex) {
-                               LOGGER.warn("Invalid relationship: " + 
targetPath);
+                               LOGGER.warn("Invalid relationship: {}", 
targetPath);
                                continue;
                        }
 
diff --git 
a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOQuery.java
 
b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOQuery.java
index 37b509778..5fecd4bc6 100644
--- 
a/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOQuery.java
+++ 
b/modeler/cayenne-wocompat/src/main/java/org/apache/cayenne/wocompat/EOQuery.java
@@ -476,7 +476,7 @@ public class EOQuery<T> extends ObjectSelect<T> {
                                try {
                                        keyExp = 
entity.translateToDbPath(keyExp);
                                } catch (Exception dbpathEx) {
-                                       LOGGER.warn("Couldn't find " + keyExp + 
" in " + entity.getName() + " in EOModel");
+                                       LOGGER.warn("Couldn't find {} in {} in 
EOModel", keyExp, entity.getName());
                                }
                        }
 

Reply via email to