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 Thu, 03 Jul 2014 17:55:34 GMT

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

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

ok, my bad. The location change was not reflecting in linux jar. With the location disabled
in lo4j2, time is close enough. log4j2 is slower by 33 seconds.

Still AsyncLogger was supposed to be way faster, not slower :(

Linux 5 million
log4j2 difference :: 199948100293
log4j difference :: 166101986757
log4j2 improved by  :: -33846113536
log4j2 improved by Seconds  :: -33.846113536 (log4j2 Customlogger full method with all formatting)
log4j2 Raw difference :: 133212456049
log4j2Raw improved over log4j by seconds :: 32.889530708  (logger.info directly from log4j2
api)
log4j2CustomRaw improved over log4j by seconds :: 42.542934325(logger.info(string) from Custom
logger)

Windows 5 million:
log4j2 difference :: 255937351846
log4j difference :: 292335314331
log4j2 improved by  :: 36397962485
log4j2 improved by Seconds  :: 36.397962485  (log4j2 Customlogger full method with all formatting)
log4j2 Raw difference :: 227856354970
log4j2Raw improved over log4j by seconds :: 64.478959361 (logger.info directly from log4j2
api)
log4j2CustomRaw improved over log4j by seconds :: 18.636401854 (logger.info(string) from Custom
logger)


> 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
>         Attachments: AppAsyncMain.java, CustomLogger.java, CustomLogger.java, complete
project.zip, final code V2 7 2 2014.zip, final code custom logger.zip, performance log4j vs
log4j2.zip, performance log4j vs log4j2.zip, performance log4jvslog4j2 singleclass.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