Skip to content

Commit 42650d9

Browse files
authored
Implemented capability to separate diff logs via log4j2 (#315)
* Implemented capability to separate diff logs via log4j2 * Minor changes to log config * Log4j2 fixes
1 parent dca6d3a commit 42650d9

File tree

8 files changed

+98
-33
lines changed

8 files changed

+98
-33
lines changed

README.md

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Note:
6868
--class com.datastax.cdm.job.DiffData cassandra-data-migrator-4.x.x.jar &> logfile_name_$(date +%Y%m%d_%H_%M).txt
6969
```
7070

71-
- Validation job will report differences as “ERRORS” in the log file as shown below
71+
- Validation job will report differences as “ERRORS” in the log file as shown below.
7272

7373
```
7474
23/04/06 08:43:06 ERROR DiffJobSession: Mismatch row found for key: [key3] Mismatch: Target Index: 1 Origin: valueC Target: value999)
@@ -79,6 +79,17 @@ Note:
7979

8080
- Please grep for all `ERROR` from the output log files to get the list of missing and mismatched records.
8181
- Note that it lists differences by primary-key values.
82+
- If you would like to redirect such logs into a separate file, you could use the `log4j2.properties` file [provided here](./src/resources/log4j2.properties) as shown below
83+
84+
```
85+
./spark-submit --properties-file cdm.properties \
86+
--conf spark.cdm.schema.origin.keyspaceTable="<keyspacename>.<tablename>" \
87+
--conf "spark.executor.extraJavaOptions='-Dlog4j.configurationFile=log4j2.properties'" \
88+
--conf "spark.driver.extraJavaOptions='-Dlog4j.configurationFile=log4j2.properties'" \
89+
--master "local[*]" --driver-memory 25G --executor-memory 25G \
90+
--class com.datastax.cdm.job.DiffData cassandra-data-migrator-4.x.x.jar &> logfile_name_$(date +%Y%m%d_%H_%M).txt
91+
```
92+
8293
- The Validation job can also be run in an AutoCorrect mode. This mode can
8394
- Add any missing records from origin to target
8495
- Update any mismatched records between origin and target (makes target same as origin).
@@ -102,7 +113,7 @@ Note:
102113
```
103114

104115
# Perform large-field Guardrail violation checks
105-
- The tool can be used to identify large fields from a table that may break you cluster guardrails (e.g. AstraDB has a 10MB limit for a single large field) `--class com.datastax.cdm.job.GuardrailCheck` as shown below
116+
- The tool can be used to identify large fields from a table that may break you cluster guardrails (e.g. AstraDB has a 10MB limit for a single large field), use class option `--class com.datastax.cdm.job.GuardrailCheck` as shown below
106117

107118
```
108119
./spark-submit --properties-file cdm.properties \

RELEASE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Release Notes
2-
## [4.4.2] - 2024-10-TBD
2+
## [4.5.0] - 2024-10-03
3+
- Upgraded to use log4j 2.x and included a template properties file that will help separate general logs from CDM class specific logs including a separate log for rows identified by `DiffData` (Validation) errors.
34
- Upgraded to use Spark `3.5.3`.
45

56
## [4.4.1] - 2024-09-20

SIT/cdm.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,14 @@ if [ $argErrors -ne 0 ]; then
9191
_usage
9292
fi
9393

94-
if [ ! -f /local/log4j.xml ]; then
95-
cd /local && jar xvf /local/cassandra-data-migrator.jar log4j.xml && cd -
94+
if [ ! -f /local/log4j2_docker.properties ]; then
95+
cd /local && jar xvf /local/cassandra-data-migrator.jar log4j2_docker.properties && cd -
9696
fi
9797

9898
spark-submit --properties-file "${PROPERTIES}" \
9999
--master "local[*]" \
100-
--conf "spark.driver.extraJavaOptions=-Dlog4j.configurationFile=file:///local/log4j.xml -Dcom.datastax.cdm.log.level=DEBUG" \
101-
--conf "spark.executor.extraJavaOptions=-Dlog4j.configurationFile=file:///local/log4j.xml -Dcom.datastax.cdm.log.level=DEBUG" \
100+
--conf "spark.driver.extraJavaOptions=-Dlog4j.configurationFile=file:///local/log4j2_docker.properties -Dcom.datastax.cdm.log.level=DEBUG" \
101+
--conf "spark.executor.extraJavaOptions=-Dlog4j.configurationFile=file:///local/log4j2_docker.properties -Dcom.datastax.cdm.log.level=DEBUG" \
102102
--class ${CLASS} \
103103
/local/cassandra-data-migrator.jar
104104

pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@
4545
<groupId>log4j</groupId>
4646
<artifactId>log4j</artifactId>
4747
</exclusion>
48+
<exclusion>
49+
<groupId>org.apache.logging.log4j</groupId>
50+
<artifactId>log4j-api</artifactId>
51+
</exclusion>
52+
<exclusion>
53+
<groupId>org.apache.logging.log4j</groupId>
54+
<artifactId>log4j-core</artifactId>
55+
</exclusion>
56+
<exclusion>
57+
<groupId>org.apache.logging.log4j</groupId>
58+
<artifactId>log4j-1.2-api</artifactId>
59+
</exclusion>
4860
<exclusion>
4961
<groupId>org.apache.logging.log4j</groupId>
5062
<artifactId>log4j-slf4j-impl</artifactId>

src/main/java/com/datastax/cdm/properties/PropertyHelper.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,6 @@ public List<Number> getNumberList(String propertyName) {
173173

174174
@Override
175175
public List<Integer> getIntegerList(String propertyName) {
176-
List<Integer> intList = new ArrayList<>();
177-
Integer i;
178176
if (null == propertyName || PropertyType.NUMBER_LIST != getType(propertyName)
179177
|| null == getNumberList(propertyName))
180178
return null;
@@ -188,7 +186,6 @@ public Boolean getBoolean(String propertyName) {
188186

189187
@Override
190188
public String getAsString(String propertyName) {
191-
String rtn;
192189
if (null == propertyName)
193190
return null;
194191
PropertyType t = getType(propertyName);

src/resources/log4j.xml

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/resources/log4j2.properties

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Copyright DataStax, Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
#
15+
16+
appender.0.type = Console
17+
appender.0.name = CONSOLE
18+
appender.0.layout.type = PatternLayout
19+
appender.0.layout.pattern = %d %-5p [%t] %c{1}:%L - %m%n
20+
21+
appender.1.type = RollingFile
22+
appender.1.name = MAIN
23+
appender.1.fileName = cdm_logs/cdm.log
24+
appender.1.filePattern = cdm_logs/cdm.%d{yyyy-MM-dd-HHmm}.%i.log
25+
appender.1.layout.type = PatternLayout
26+
appender.1.layout.pattern = %d %-5p [%t] %c{1}:%L - %m%n
27+
appender.1.policy.type = Policies
28+
appender.1.policy.0.type = OnStartupTriggeringPolicy
29+
appender.1.policy.1.type = SizeBasedTriggeringPolicy
30+
appender.1.policy.1.size = 10m
31+
appender.1.strategy.type = DefaultRolloverStrategy
32+
appender.1.strategy.max = 100
33+
34+
appender.2.type = RollingFile
35+
appender.2.name = DIFF
36+
appender.2.fileName = cdm_logs/cdm_diff.log
37+
appender.2.filePattern = cdm_logs/cdm_diff.%d{yyyy-MM-dd-HHmm}.%i.log
38+
appender.2.layout.type = PatternLayout
39+
appender.2.layout.pattern = %d %-5p [%t] %c{1}:%L - %m%n
40+
appender.2.policy.type = Policies
41+
appender.2.policy.0.type = OnStartupTriggeringPolicy
42+
appender.2.policy.1.type = SizeBasedTriggeringPolicy
43+
appender.2.policy.1.size = 10m
44+
appender.2.strategy.type = DefaultRolloverStrategy
45+
appender.2.strategy.max = 100
46+
47+
rootLogger.level = INFO
48+
rootLogger.appenderRef.0.ref = CONSOLE
49+
rootLogger.appenderRef.0.level = INFO
50+
51+
logger.0.name = com.datastax.cdm
52+
logger.0.level = INFO
53+
logger.0.additivity = false
54+
logger.0.appenderRef.0.ref = MAIN
55+
56+
logger.1.name = com.datastax.cdm.job.DiffJobSession
57+
logger.1.level = ERROR
58+
logger.1.additivity = false
59+
logger.1.appenderRef.0.ref = DIFF

src/resources/log4j.properties renamed to src/resources/log4j2_docker.properties

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
# limitations under the License.
1414
#
1515

16-
# Root logger option
17-
log4j.rootLogger=INFO, stdout
18-
# Direct log messages to stdout
19-
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
20-
log4j.appender.stdout.Target=System.out
21-
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
22-
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [THREAD ID=%t] %c{1}:%L - %m%n
16+
appender.0.type = Console
17+
appender.0.name = CONSOLE
18+
appender.0.layout.type = PatternLayout
19+
appender.0.layout.pattern = %d %-5p [%t] %c{1}:%L - %m%n
20+
21+
rootLogger.level = INFO
22+
rootLogger.appenderRef.0.ref = CONSOLE
23+
rootLogger.appenderRef.0.level = INFO

0 commit comments

Comments
 (0)