[
https://issues.apache.org/jira/browse/LOG4J2-695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14054326#comment-14054326
]
SIBISH BASHEER edited comment on LOG4J2-695 at 7/8/14 12:22 AM:
----------------------------------------------------------------
java -jar microbenchmarks.jar -f 5 -wi 10 -i 20
# Run complete. Total time: 01:21:35
{code}
Benchmark Mode Samples
Mean Mean error
Units
c.c.c.p.Log4j12Benchmark.throughput thrpt 100
232061 .352
5780.612 ops/s
c.c.c.p.Log4j12Benchmark.throughputBaseline thrpt 100
11949938 04.232
431679.105 ops/s
c.c.c.p.Log4j12Benchmark.throughputIsEnabled thrpt 100
13232351 9.562
110532.384 ops/s
c.c.c.p.Log4j12WrapperBenchmark.throughputBaseline thrpt 100
11950444 32.613
389938.642 ops/s
c.c.c.p.Log4j12WrapperBenchmark.throughputStructured thrpt 100
79056 .818
2437.323 ops/s
c.c.c.p.Log4j2Benchmark.throughput thrpt 100
186208 .149
24629.974 ops/s
c.c.c.p.Log4j2Benchmark.throughputBaseline thrpt 100
11947435 52.878
424763.234 ops/s
c.c.c.p.Log4j2Benchmark.throughputIsEnabled thrpt 100
15931658 2.263
49308.062 ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputBaseline thrpt 100
11944832 88.602
489582.098 ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputSimple thrpt 100
182588 .643
16072.406 ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputStructured thrpt 100
141796 .857
13782.460 ops/s
c.c.c.p.Log4j12Benchmark.latency sample 1552418
4476 .149
268.453 ns/op
c.c.c.p.Log4j12Benchmark.latencyBaseline sample 1586753
42 .260
0.058 ns/op
c.c.c.p.Log4j12Benchmark.latencyIsEnabled sample 1378695
51 .239
0.062 ns/op
c.c.c.p.Log4j12WrapperBenchmark.latencyBaseline sample 1583087
42 .317
0.119 ns/op
c.c.c.p.Log4j12WrapperBenchmark.latencyStructured sample 1087821
11747 .086
702.621 ns/op
c.c.c.p.Log4j2Benchmark.latency sample 1343426
5074 .541
694.055 ns/op
c.c.c.p.Log4j2Benchmark.latencyBaseline sample 1593739
42 .243
0.108 ns/op
c.c.c.p.Log4j2Benchmark.latencyIsEnabled sample 1519851
50 .634
0.106 ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencyBaseline sample 1600894
41 .939
0.045 ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencySimple sample 1331882
5284 .826
1304.718 ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencyStructured sample 1006173
6810 .166
804.614 ns/op
c.c.c.p.UUIDBenchmark.latencyBaseline sample 1601128
41 .882
0.109 ns/op
c.c.c.p.UUIDBenchmark.latencyJavaUtilUUID sample 1475423
4698 .427
43.109 ns/op
c.c.c.p.UUIDBenchmark.latencyLog4jUuidUtil sample 1495939
627 .551
17.661 ns/op
{code}
was (Author: sibbsnb):
java -jar microbenchmarks.jar -f 5 -wi 10 -i 20
# Run complete. Total time: 01:21:35
Benchmark Mode Samples
Mean Mean error
Units
c.c.c.p.Log4j12Benchmark.throughput thrpt 100
232061 .352
5780.612 ops/s
c.c.c.p.Log4j12Benchmark.throughputBaseline thrpt 100
11949938 04.232
431679.105 ops/s
c.c.c.p.Log4j12Benchmark.throughputIsEnabled thrpt 100
13232351 9.562
110532.384 ops/s
c.c.c.p.Log4j12WrapperBenchmark.throughputBaseline thrpt 100
11950444 32.613
389938.642 ops/s
c.c.c.p.Log4j12WrapperBenchmark.throughputStructured thrpt 100
79056 .818
2437.323 ops/s
c.c.c.p.Log4j2Benchmark.throughput thrpt 100
186208 .149
24629.974 ops/s
c.c.c.p.Log4j2Benchmark.throughputBaseline thrpt 100
11947435 52.878
424763.234 ops/s
c.c.c.p.Log4j2Benchmark.throughputIsEnabled thrpt 100
15931658 2.263
49308.062 ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputBaseline thrpt 100
11944832 88.602
489582.098 ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputSimple thrpt 100
182588 .643
16072.406 ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputStructured thrpt 100
141796 .857
13782.460 ops/s
c.c.c.p.Log4j12Benchmark.latency sample 1552418
4476 .149
268.453 ns/op
c.c.c.p.Log4j12Benchmark.latencyBaseline sample 1586753
42 .260
0.058 ns/op
c.c.c.p.Log4j12Benchmark.latencyIsEnabled sample 1378695
51 .239
0.062 ns/op
c.c.c.p.Log4j12WrapperBenchmark.latencyBaseline sample 1583087
42 .317
0.119 ns/op
c.c.c.p.Log4j12WrapperBenchmark.latencyStructured sample 1087821
11747 .086
702.621 ns/op
c.c.c.p.Log4j2Benchmark.latency sample 1343426
5074 .541
694.055 ns/op
c.c.c.p.Log4j2Benchmark.latencyBaseline sample 1593739
42 .243
0.108 ns/op
c.c.c.p.Log4j2Benchmark.latencyIsEnabled sample 1519851
50 .634
0.106 ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencyBaseline sample 1600894
41 .939
0.045 ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencySimple sample 1331882
5284 .826
1304.718 ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencyStructured sample 1006173
6810 .166
804.614 ns/op
c.c.c.p.UUIDBenchmark.latencyBaseline sample 1601128
41 .882
0.109 ns/op
c.c.c.p.UUIDBenchmark.latencyJavaUtilUUID sample 1475423
4698 .427
43.109 ns/op
c.c.c.p.UUIDBenchmark.latencyLog4jUuidUtil sample 1495939
627 .551
17.661 ns/op
> Custom Logger with restrictions on existing methods
> ---------------------------------------------------
>
> Key: LOG4J2-695
> URL: https://issues.apache.org/jira/browse/LOG4J2-695
> Project: Log4j 2
> Issue Type: Bug
> Components: API
> Reporter: SIBISH BASHEER
> Labels: customlogger
> Fix For: 2.0-rc2
>
> Attachments: AppAsyncMain.java, CustomLogger.java, CustomLogger.java,
> complete project.zip, final code V2 7 2 2014.zip, final code custom
> logger.zip, jmh-based-perf-tests.zip, performance log4j vs log4j2.zip,
> performance log4j vs log4j2.zip, performance log4jvslog4j2 singleclass.zip,
> to Ralph performance code.zip
>
>
> I have been looking at the Custom/Extended logger discussions. But none of
> them seems to fulfil what i am looking for.
> 1) I want custom methods as below:
> {code}
> private static CustomLogger logger =
> CustomLogger.getLogger(AppAsyncMain.class);
>
> logger.info( transaction_id, app_name + event_name +
> "inside the loop" + "inside the loop of
> the sample app" +
> "success" + "looped in" + "loop_count" +
> String.valueOf(i));
> {code}
>
> log:
> {code}
> 2014-06-30 16:09:28,268 log_level="INFO" thread_name="main"
> class_name="com.custom.samplelog4j.AppAsyncMain"
> transaction_id="79ea1071-9565-405a-aa18-75d271694bf2"
> event_id="dd5c69c0-4400-41fd-8a2e-5d538d8e8c9b" app="Sample Logging SDK App"
> event_name="Sample Event" action="start of sample app" desc="start of api"
> result="success" reason="start" token="abcdefg" alias="[email protected]"
> {code}
>
> 2) I want to show warning in existing logger methods so the teams using the
> custom logger doesn't use these methods other than for testing:
> {code}
> logger.info("start of statement");
> {code}
>
> log:
> {code}
> 2014-06-30 16:12:31,065 log_level="INFO" thread_name="main"
> class_name="com.custom.samplelog4j2.AppAsyncMain" start of statement
> customlogger_warning="method not recommended for production use"
> {code}
>
> 3) Custom validations for the fields:
> {code}
> private static String validateFields(String app_name, String event_name,
> String action, String desc, Result result, String
> reason) {
> String validateStatus = "";
> if (!ValidateAppName(app_name)) {
> validateStatus = "app_name";
> } else if (!ValidateEventName(event_name)) {
> validateStatus = "event_name";
> } else if (!ValidateAction(action)) {
> validateStatus = "action";
> } else if (!ValidateDesc(desc)) {
> validateStatus = "desc";
> } else if (!ValidateReason(result, reason)) {
> validateStatus = "reason";
> }
> return validateStatus;
> }
> {code}
> Options tried:
> 1.
> * extended ExtendedLoggerWrapper
> * created the map of the Custom logger
> * This option was failing because of "writing to a closed appender"
> * Attached is the code "CustomLogger.java"
>
> 2. Modified the AbstractLogger in Trunk and added the below methods:
> {code}
> @Override
> public void info(final String message) {
> String updtMessage = message + " amexlogger_error=\"Incorrect method
> used\"";
> logIfEnabled(FQCN, Level.INFO, null, updtMessage, (Throwable) null);
> }
> public void info(final String transactionId, final String app_name, final
> String event_name, final String action, final String desc, final String
> result, final String reason, final String... moreFields) {
> String message = "transaction_id=" + transactionId + " " + "app_name="
> + app_name + " " + "event_name=" + event_name + " " + "action=" + action;
>
> logIfEnabled(FQCN, Level.INFO, null, message, (Throwable) null);
> }
> {code}
> I don't want to modify the methods inside the log4j-api.
>
> Please help me with the correct approach on how to use log4j2 for this
> usecase.
> Thanks
> Sibish
--
This message was sent by Atlassian JIRA
(v6.2#6252)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]