logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "SIBISH BASHEER (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-695) Custom Logger with restrictions on existing methods
Date Tue, 08 Jul 2014 17:08:04 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-695?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14055139#comment-14055139
] 

SIBISH BASHEER commented on LOG4J2-695:
---------------------------------------

Yes Remko, did not modify anything and they are AsyncRoot.

java -jar microbenchmarks.jar -f 1 -wi 5 -i 10 -t 4
{code}
# Run complete. Total time: 00:10:31

Benchmark                                                Mode   Samples         Mean   Mean
error    Units
c.c.c.p.Log4j12Benchmark.throughput                     thrpt        10    54292.163    63426.779
   ops/s
c.c.c.p.Log4j12Benchmark.throughputBaseline             thrpt        10 4773694097.740 18061009.250
   ops/s
c.c.c.p.Log4j12Benchmark.throughputIsEnabled            thrpt        10 417715187.765  1062108.279
   ops/s
c.c.c.p.Log4j12WrapperBenchmark.throughputBaseline      thrpt        10 4772317275.322 10808649.641
   ops/s
c.c.c.p.Log4j12WrapperBenchmark.throughputStructured    thrpt        10    57173.927     4612.839
   ops/s
c.c.c.p.Log4j2Benchmark.throughput                      thrpt        10    53217.470    86405.682
   ops/s
c.c.c.p.Log4j2Benchmark.throughputBaseline              thrpt        10 4766086357.012 16434834.337
   ops/s
c.c.c.p.Log4j2Benchmark.throughputIsEnabled             thrpt        10 636005851.630  1829639.691
   ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputBaseline       thrpt        10 4768673130.840  9038540.398
   ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputSimple         thrpt        10    52597.560    98650.778
   ops/s
c.c.c.p.Log4j2WrapperBenchmark.throughputStructured     thrpt        10    40345.328    61451.090
   ops/s
c.c.c.p.Log4j12Benchmark.latency                       sample    409240    38008.195     3770.083
   ns/op
c.c.c.p.Log4j12Benchmark.latencyBaseline               sample    531111       42.118     
  0.418    ns/op
c.c.c.p.Log4j12Benchmark.latencyIsEnabled              sample    467189       58.405     
  0.332    ns/op
c.c.c.p.Log4j12WrapperBenchmark.latencyBaseline        sample    528020       42.563     
  0.097    ns/op
c.c.c.p.Log4j12WrapperBenchmark.latencyStructured      sample    553583    79230.313     
449.698    ns/op
c.c.c.p.Log4j2Benchmark.latency                        sample    138547   116699.187   129960.371
   ns/op
c.c.c.p.Log4j2Benchmark.latencyBaseline                sample    619708       43.532     
  0.103    ns/op
c.c.c.p.Log4j2Benchmark.latencyIsEnabled               sample    640242       52.964     
  0.316    ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencyBaseline         sample    532857       42.151     
  0.218    ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencySimple           sample    305164   117965.613   152291.227
   ns/op
c.c.c.p.Log4j2WrapperBenchmark.latencyStructured       sample    216037    93209.126    32267.423
   ns/op
c.c.c.p.UUIDBenchmark.latencyBaseline                  sample    638449       42.554     
  0.286    ns/op
c.c.c.p.UUIDBenchmark.latencyJavaUtilUUID              sample    305093    47200.531     1901.007
   ns/op
c.c.c.p.UUIDBenchmark.latencyLog4jUuidUtil             sample     61653    28257.235    40971.535
   ns/op
{code}

> 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="abc@gmail.com" 
> {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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message