[ 
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]

Reply via email to