SIBISH BASHEER created LOG4J2-695: ------------------------------------- Summary: 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
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: 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)); log: 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="a...@gmail.com" 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: logger.info("start of statement"); log: 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" 3) Custom validations for the fields: 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; } Options tried: 1) a) extended ExtendedLoggerWrapper b) created the map of the Custom logger c) This option was failing because of "writing to a closed appender" d) Attached is the code "CustomLogger.java" 2) Modified the AbstractLogger in Trunk and added the below methods: @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); } 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-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org