diff options
Diffstat (limited to 'pki/base/common/src/com/netscape/cms/logging/LogFile.java')
-rw-r--r-- | pki/base/common/src/com/netscape/cms/logging/LogFile.java | 493 |
1 files changed, 244 insertions, 249 deletions
diff --git a/pki/base/common/src/com/netscape/cms/logging/LogFile.java b/pki/base/common/src/com/netscape/cms/logging/LogFile.java index c2dd7b332..4a3b3cb0d 100644 --- a/pki/base/common/src/com/netscape/cms/logging/LogFile.java +++ b/pki/base/common/src/com/netscape/cms/logging/LogFile.java @@ -17,7 +17,6 @@ // --- END COPYRIGHT BLOCK --- package com.netscape.cms.logging; - import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; @@ -81,7 +80,7 @@ import com.netscape.cmsutil.util.Utils; /** * A log event listener which write logs to log files - * + * * @version $Revision$, $Date$ **/ public class LogFile implements ILogEventListener, IExtendedPluginInfo { @@ -108,7 +107,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { private final static String LOG_SIGNED_AUDIT_EXCEPTION = "LOG_SIGNED_AUDIT_EXCEPTION_1"; - protected ILogger mSignedAuditLogger = CMS.getSignedAuditLogger(); + protected ILogger mSignedAuditLogger = CMS.getSignedAuditLogger(); protected IConfigStore mConfig = null; /** @@ -152,7 +151,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * The log date entry format */ - protected SimpleDateFormat mLogDateFormat = new SimpleDateFormat(mDatePattern); + protected SimpleDateFormat mLogDateFormat = new SimpleDateFormat(mDatePattern); /** * The date object used for log entries @@ -235,13 +234,13 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Constructor for a LogFile. - * + * */ public LogFile() { } - public void init(ISubsystem owner, IConfigStore config) - throws EBaseException { + public void init(ISubsystem owner, IConfigStore config) + throws EBaseException { mConfig = config; try { @@ -263,7 +262,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { try { mSAuditCertNickName = config.getString( PROP_SIGNED_AUDIT_CERT_NICKNAME); - CMS.debug("LogFile: init(): audit log signing enabled. signedAuditCertNickname="+ mSAuditCertNickName); + CMS.debug("LogFile: init(): audit log signing enabled. signedAuditCertNickname=" + mSAuditCertNickName); } catch (EBaseException e) { throw new ELogException(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", config.getName() + "." @@ -272,9 +271,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { if (mSAuditCertNickName == null || mSAuditCertNickName.trim().equals("")) { throw new ELogException(CMS.getUserMessage( - "CMS_BASE_GET_PROPERTY_FAILED", - config.getName() + "." - + PROP_SIGNED_AUDIT_CERT_NICKNAME)); + "CMS_BASE_GET_PROPERTY_FAILED", + config.getName() + "." + + PROP_SIGNED_AUDIT_CERT_NICKNAME)); } } @@ -309,13 +308,14 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { String eventId = tokens.nextToken().trim(); theVector.addElement(eventId); - CMS.debug("LogFile: log event type selected: "+eventId); + CMS.debug("LogFile: log event type selected: " + eventId); } return theVector; } /** * add the event to the selected events list + * * @param event to be selected */ public void selectEvent(String event) { @@ -325,6 +325,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * remove the event from the selected events list + * * @param event to be de-selected */ public void deselectEvent(String event) { @@ -334,6 +335,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * replace the selected events list + * * @param events comma-separated event list */ public void replaceEvents(String events) { @@ -348,9 +350,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { ByteArrayOutputStream output = new ByteArrayOutputStream(); Base64OutputStream b64 = new Base64OutputStream(new PrintStream(new - FilterOutputStream(output) + FilterOutputStream(output) ) - ); + ); b64.write(bytes); b64.flush(); @@ -363,7 +365,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { private static boolean mInSignedAuditLogFailureMode = false; private static synchronized void shutdownCMS() { - if( mInSignedAuditLogFailureMode == false ) { + if (mInSignedAuditLogFailureMode == false) { // Set signed audit log failure mode true // No, this isn't a race condition, because the method is @@ -371,7 +373,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { mInSignedAuditLogFailureMode = true; // Block all new incoming requests - if( CMS.areRequestsDisabled() == false ) { + if (CMS.areRequestsDisabled() == false) { // XXX is this a race condition? CMS.disableRequests(); } @@ -389,7 +391,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Initialize and open the log using the parameters from a config store - * + * * @param config The property config store to find values in */ public void init(IConfigStore config) throws IOException, @@ -445,50 +447,50 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { // retrieve the subsystem String subsystem = ""; - ISubsystem caSubsystem = CMS.getSubsystem( "ca" ); - if( caSubsystem != null ) { + ISubsystem caSubsystem = CMS.getSubsystem("ca"); + if (caSubsystem != null) { subsystem = "ca"; } - ISubsystem raSubsystem = CMS.getSubsystem( "ra" ); - if( raSubsystem != null ) { + ISubsystem raSubsystem = CMS.getSubsystem("ra"); + if (raSubsystem != null) { subsystem = "ra"; } - ISubsystem kraSubsystem = CMS.getSubsystem( "kra" ); - if( kraSubsystem != null ) { + ISubsystem kraSubsystem = CMS.getSubsystem("kra"); + if (kraSubsystem != null) { subsystem = "kra"; } - ISubsystem ocspSubsystem = CMS.getSubsystem( "ocsp" ); - if( ocspSubsystem != null ) { + ISubsystem ocspSubsystem = CMS.getSubsystem("ocsp"); + if (ocspSubsystem != null) { subsystem = "ocsp"; } // retrieve the instance name String instIDPath = CMS.getInstanceDir(); - int index = instIDPath.lastIndexOf( "/" ); - String instID = instIDPath.substring( index + 1 ); + int index = instIDPath.lastIndexOf("/"); + String instID = instIDPath.substring(index + 1); // build the default signedAudit file name signedAuditDefaultFileName = subsystem + "_" + instID + "_" + "audit"; - } catch( Exception e2 ) { + } catch (Exception e2) { throw new ELogException( - CMS.getUserMessage( "CMS_BASE_GET_PROPERTY_FAILED", + CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", config.getName() + "." + - PROP_FILE_NAME ) ); + PROP_FILE_NAME)); } // the default value is determined by the eventType. if (mType.equals(ILogger.PROP_SIGNED_AUDIT)) { defaultFileName = "logs/signedAudit/" + signedAuditDefaultFileName; - }else if (mType.equals(ILogger.PROP_SYSTEM)) { + } else if (mType.equals(ILogger.PROP_SYSTEM)) { defaultFileName = "logs/system"; - }else if (mType.equals(ILogger.PROP_AUDIT)) { + } else if (mType.equals(ILogger.PROP_AUDIT)) { defaultFileName = "logs/transactions"; - }else { + } else { //wont get here throw new ELogException(CMS.getUserMessage("CMS_LOG_INVALID_LOG_TYPE", config.getName())); @@ -502,29 +504,29 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } if (mOn) { - init(fileName, config.getInteger(PROP_BUFFER_SIZE, BUFFER_SIZE), - config.getInteger(PROP_FLUSH_INTERVAL, FLUSH_INTERVAL)); + init(fileName, config.getInteger(PROP_BUFFER_SIZE, BUFFER_SIZE), + config.getInteger(PROP_FLUSH_INTERVAL, FLUSH_INTERVAL)); } } /** * Initialize and open the log - * - * @param bufferSize The buffer size for the output stream in bytes - * @param flushInterval The interval in seconds to flush the log + * + * @param bufferSize The buffer size for the output stream in bytes + * @param flushInterval The interval in seconds to flush the log */ - public void init(String fileName, int bufferSize, int flushInterval) throws IOException,ELogException { + public void init(String fileName, int bufferSize, int flushInterval) throws IOException, ELogException { if (fileName == null) throw new ELogException(CMS.getUserMessage("CMS_LOG_INVALID_FILE_NAME", "null")); - //If we want to reuse the old log files - //mFileName = fileName + "." + mLogFileDateFormat.format(mDate); + //If we want to reuse the old log files + //mFileName = fileName + "." + mLogFileDateFormat.format(mDate); mFileName = fileName; - if( !Utils.isNT() ) { + if (!Utils.isNT()) { // Always insure that a physical file exists! - Utils.exec( "touch " + mFileName ); - Utils.exec( "chmod 00640 " + mFileName ); + Utils.exec("touch " + mFileName); + Utils.exec("chmod 00640 " + mFileName); } mFile = new File(mFileName); mBufferSize = bufferSize; @@ -540,25 +542,25 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { Provider[] providers = java.security.Security.getProviders(); int ps = providers.length; - for (int i = 0; i<ps; i++) { - CMS.debug("LogFile: provider "+i+"= "+providers[i].getName()); + for (int i = 0; i < ps; i++) { + CMS.debug("LogFile: provider " + i + "= " + providers[i].getName()); } CryptoManager cm = CryptoManager.getInstance(); // find CertServer's private key - X509Certificate cert = cm.findCertByNickname( mSAuditCertNickName ); + X509Certificate cert = cm.findCertByNickname(mSAuditCertNickName); if (cert != null) { - CMS.debug("LogFile: setupSignig(): found cert:"+mSAuditCertNickName); + CMS.debug("LogFile: setupSignig(): found cert:" + mSAuditCertNickName); } else { - CMS.debug("LogFile: setupSignig(): cert not found:"+mSAuditCertNickName); + CMS.debug("LogFile: setupSignig(): cert not found:" + mSAuditCertNickName); } mSigningKey = cm.findPrivKeyByCert(cert); String sigAlgorithm; - if( mSigningKey instanceof RSAPrivateKey ) { + if (mSigningKey instanceof RSAPrivateKey) { sigAlgorithm = "SHA-256/RSA"; - } else if( mSigningKey instanceof DSAPrivateKey ) { + } else if (mSigningKey instanceof DSAPrivateKey) { sigAlgorithm = "SHA-256/DSA"; } else { throw new NoSuchAlgorithmException("Unknown private key type"); @@ -567,11 +569,11 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { CryptoToken savedToken = cm.getThreadToken(); try { CryptoToken keyToken = - ((org.mozilla.jss.pkcs11.PK11PrivKey)mSigningKey) - .getOwningToken(); + ((org.mozilla.jss.pkcs11.PK11PrivKey) mSigningKey) + .getOwningToken(); cm.setThreadToken(keyToken); mSignature = java.security.Signature.getInstance(sigAlgorithm, - CRYPTO_PROVIDER); + CRYPTO_PROVIDER); } finally { cm.setThreadToken(savedToken); } @@ -580,7 +582,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { // get the last signature from the currently-opened file String entry = getLastSignature(mFile); - if( entry != null ) { + if (entry != null) { mSignature.update(entry.getBytes("UTF-8")); mSignature.update(LINE_SEP_BYTE); } @@ -614,12 +616,11 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } private static void setupSigningFailure(String logMessageCode, Exception e) - throws EBaseException - { + throws EBaseException { try { - ConsoleError.send( new SystemEvent( - CMS.getLogMessage(logMessageCode))); - } catch(Exception e2) { + ConsoleError.send(new SystemEvent( + CMS.getLogMessage(logMessageCode))); + } catch (Exception e2) { // don't allow an exception while printing to the console // prevent us from running the rest of this function. e2.printStackTrace(); @@ -632,36 +633,35 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Startup the instance * <P> - * + * * <ul> - * <li>signed.audit LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP used at audit - * function startup + * <li>signed.audit LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP used at audit function startup * </ul> + * * @exception EBaseException if an internal error occurred */ public void startup() throws EBaseException { // ensure that any low-level exceptions are reported // to the signed audit log and stored as failures CMS.debug("LogFile: entering LogFile.startup()"); - if( mOn && mLogSigning ) { + if (mOn && mLogSigning) { try { setupSigning(); - audit( CMS.getLogMessage( - LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP, - ILogger.SYSTEM_UID, - ILogger.SUCCESS) ); - } catch(EBaseException e) { - audit( CMS.getLogMessage( - LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP, - ILogger.SYSTEM_UID, - ILogger.FAILURE) ); + audit(CMS.getLogMessage( + LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP, + ILogger.SYSTEM_UID, + ILogger.SUCCESS)); + } catch (EBaseException e) { + audit(CMS.getLogMessage( + LOGGING_SIGNED_AUDIT_AUDIT_LOG_STARTUP, + ILogger.SYSTEM_UID, + ILogger.FAILURE)); throw e; } } } - /** * Retrieves the eventType this log is triggered. */ @@ -673,7 +673,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { * Retrieves the log on/off. */ public String getOn() { - return String.valueOf( mOn ); + return String.valueOf(mOn); } /** @@ -695,22 +695,21 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Record that the signed audit log has been signed * <P> - * + * * <ul> - * <li>signed.audit LOGGING_SIGNED_AUDIT_SIGNING used when a signature on the - * audit log is generated (same as "flush" time) + * <li>signed.audit LOGGING_SIGNED_AUDIT_SIGNING used when a signature on the audit log is generated (same as "flush" time) * </ul> + * * @exception IOException for input/output problems * @exception ELogException when plugin implementation fails * @exception SignatureException when signing fails * @exception InvalidKeyException when an invalid key is utilized */ private void pushSignature() throws IOException, ELogException, - SignatureException, InvalidKeyException - { + SignatureException, InvalidKeyException { byte[] sigBytes = null; - if( mSignature == null ) { + if (mSignature == null) { return; } @@ -727,31 +726,31 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { LOGGING_SIGNED_AUDIT_SIGNING, ILogger.SYSTEM_UID, ILogger.SUCCESS, - base64Encode( sigBytes ) ); + base64Encode(sigBytes)); - if( mSignedAuditLogger == null ) { + if (mSignedAuditLogger == null) { return; } ILogEvent ev = mSignedAuditLogger.create( ILogger.EV_SIGNED_AUDIT, - ( Properties ) null, + (Properties) null, ILogger.S_SIGNED_AUDIT, ILogger.LL_SECURITY, auditMessage, o, - ILogger.L_SINGLELINE ); + ILogger.L_SINGLELINE); - String logMesg = logEvt2String(ev); + String logMesg = logEvt2String(ev); doLog(logMesg, true); } private static String getLastSignature(File f) throws IOException { - BufferedReader r = new BufferedReader( new FileReader(f) ); + BufferedReader r = new BufferedReader(new FileReader(f)); String lastSig = null; String curLine = null; - while( (curLine = r.readLine()) != null ) { - if( curLine.indexOf("AUDIT_LOG_SIGNING") != -1 ) { + while ((curLine = r.readLine()) != null) { + if (curLine.indexOf("AUDIT_LOG_SIGNING") != -1) { lastSig = curLine; } } @@ -760,8 +759,8 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } /** - * Open the log file. This creates the buffered FileWriter - * + * Open the log file. This creates the buffered FileWriter + * */ protected synchronized void open() throws IOException { RandomAccessFile out; @@ -771,12 +770,12 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { out.seek(out.length()); //XXX int or long? mBytesWritten = (int) out.length(); - if( !Utils.isNT() ) { + if (!Utils.isNT()) { try { - Utils.exec( "chmod 00640 " + mFile.getCanonicalPath() ); - } catch( IOException e ) { - CMS.debug( "Unable to change file permissions on " - + mFile.toString() ); + Utils.exec("chmod 00640 " + mFile.getCanonicalPath()); + } catch (IOException e) { + CMS.debug("Unable to change file permissions on " + + mFile.toString()); } } mLogWriter = new BufferedWriter( @@ -785,20 +784,20 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { // The first time we open, mSignature will not have been // initialized yet. That's ok, we will push our first signature // in setupSigning(). - if( mLogSigning && (mSignature != null)) { + if (mLogSigning && (mSignature != null)) { try { pushSignature(); } catch (ELogException le) { ConsoleError.send( - new SystemEvent(CMS.getUserMessage("CMS_LOG_ILLEGALARGUMENT", - mFileName))); + new SystemEvent(CMS.getUserMessage("CMS_LOG_ILLEGALARGUMENT", + mFileName))); } } } catch (IllegalArgumentException iae) { ConsoleError.send( - new SystemEvent(CMS.getUserMessage("CMS_LOG_ILLEGALARGUMENT", - mFileName))); - } catch(GeneralSecurityException gse) { + new SystemEvent(CMS.getUserMessage("CMS_LOG_ILLEGALARGUMENT", + mFileName))); + } catch (GeneralSecurityException gse) { // error with signed audit log, shutdown CMS gse.printStackTrace(); shutdownCMS(); @@ -808,12 +807,12 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } /** - * Flush the log file. Also update the MAC for hash protected logs - * + * Flush the log file. Also update the MAC for hash protected logs + * */ public synchronized void flush() { try { - if( mLogSigning ) { + if (mLogSigning) { try { pushSignature(); } catch (ELogException le) { @@ -831,7 +830,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { e.printStackTrace(); shutdownCMS(); } - } catch(GeneralSecurityException gse) { + } catch (GeneralSecurityException gse) { // error with signed audit log, shutdown CMS gse.printStackTrace(); shutdownCMS(); @@ -842,7 +841,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Close the log file - * + * */ protected synchronized void close() { try { @@ -859,10 +858,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Shutdown this log file. * <P> - * + * * <ul> - * <li>signed.audit LOGGING_SIGNED_AUDIT_AUDIT_LOG_SHUTDOWN used at audit - * function shutdown + * <li>signed.audit LOGGING_SIGNED_AUDIT_AUDIT_LOG_SHUTDOWN used at audit function shutdown * </ul> */ public synchronized void shutdown() { @@ -876,9 +874,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { auditMessage = CMS.getLogMessage( LOGGING_SIGNED_AUDIT_AUDIT_LOG_SHUTDOWN, ILogger.SYSTEM_UID, - ILogger.SUCCESS ); + ILogger.SUCCESS); - audit( auditMessage ); + audit(auditMessage); close(); } @@ -886,9 +884,10 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Set the flush interval * <P> - * @param flushInterval The amount of time in seconds until the log - * is flush. A value of 0 will disable autoflush. This will also set - * the update period for hash protected logs. + * + * @param flushInterval The amount of time in seconds until the log + * is flush. A value of 0 will disable autoflush. This will also set + * the update period for hash protected logs. **/ public synchronized void setFlushInterval(int flushInterval) { mFlushInterval = flushInterval * 1000; @@ -903,7 +902,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } /** - * Log flush thread. Sleep for the flush interval and flush the + * Log flush thread. Sleep for the flush interval and flush the * log. Changing flush interval to 0 will cause this thread to exit. */ final class FlushThread extends Thread { @@ -925,7 +924,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } catch (InterruptedException e) { // This shouldn't happen very often ConsoleError.send(new - SystemEvent(CMS.getUserMessage("CMS_LOG_THREAD_INTERRUPT", "flush"))); + SystemEvent(CMS.getUserMessage("CMS_LOG_THREAD_INTERRUPT", "flush"))); } } @@ -942,10 +941,10 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } /** - * Synchronized method to write a string to the log file. All I18N + * Synchronized method to write a string to the log file. All I18N * should take place before this call. - * - * @param entry The log entry string + * + * @param entry The log entry string */ protected synchronized void log(String entry) throws ELogException { doLog(entry, false); @@ -971,40 +970,40 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { try { mLogWriter.write(entry, 0/*offset*/, entry.length()); - if (mLogSigning==true) { - if(mSignature != null) { + if (mLogSigning == true) { + if (mSignature != null) { // include newline for calculating MAC mSignature.update(entry.getBytes("UTF-8")); } else { CMS.debug("LogFile: mSignature is not yet ready... null in log()"); } } - if (mTrace) { - CharArrayWriter cw = new CharArrayWriter(200); + if (mTrace) { + CharArrayWriter cw = new CharArrayWriter(200); PrintWriter pw = new PrintWriter(cw); Exception e = new Exception(); - e.printStackTrace(pw); - char[] c = cw.toCharArray(); - cw.close(); + e.printStackTrace(pw); + char[] c = cw.toCharArray(); + cw.close(); pw.close(); - CharArrayReader cr = new CharArrayReader(c); + CharArrayReader cr = new CharArrayReader(c); LineNumberReader lr = new LineNumberReader(cr); - String text = null; - String method = null; + String text = null; + String method = null; String fileAndLine = null; - if (lr.ready()) { - text = lr.readLine(); - do { - text = lr.readLine(); + if (lr.ready()) { + text = lr.readLine(); + do { + text = lr.readLine(); } while (text.indexOf("logging") != -1); - int p = text.indexOf("("); + int p = text.indexOf("("); fileAndLine = text.substring(p); - String classandmethod = text.substring(0, p); - int q = classandmethod.lastIndexOf("."); - method = classandmethod.substring(q + 1); + String classandmethod = text.substring(0, p); + int q = classandmethod.lastIndexOf("."); + method = classandmethod.substring(q + 1); mLogWriter.write(fileAndLine, 0/*offset*/, fileAndLine.length()); mLogWriter.write(" ", 0/*offset*/, " ".length()); mLogWriter.write(method, 0/*offset*/, method.length()); @@ -1012,8 +1011,8 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } mLogWriter.newLine(); - if (mLogSigning==true){ - if(mSignature != null) { + if (mLogSigning == true) { + if (mSignature != null) { mSignature.update(LINE_SEP_BYTE); } else { CMS.debug("LogFile: mSignature is null in log() 2"); @@ -1027,17 +1026,16 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { shutdownCMS(); } } catch (IllegalStateException e) { - CMS.debug("LogFile: exception thrown in log(): "+e.toString()); - ConsoleError.send(new SignedAuditEvent(CMS.getLogMessage(LOG_SIGNED_AUDIT_EXCEPTION,e.toString()))); - } catch( GeneralSecurityException gse ) { + CMS.debug("LogFile: exception thrown in log(): " + e.toString()); + ConsoleError.send(new SignedAuditEvent(CMS.getLogMessage(LOG_SIGNED_AUDIT_EXCEPTION, e.toString()))); + } catch (GeneralSecurityException gse) { // DJN: handle error CMS.debug("LogFile: exception thrown in log(): " - + gse.toString()); + + gse.toString()); gse.printStackTrace(); ConsoleError.send(new SignedAuditEvent(CMS.getLogMessage( - LOG_SIGNED_AUDIT_EXCEPTION,gse.toString()))); + LOG_SIGNED_AUDIT_EXCEPTION, gse.toString()))); } - // XXX // Although length will be in Unicode dual-bytes, the PrintWriter @@ -1057,8 +1055,8 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Write an event to the log file - * - * @param ev The event to be logged. + * + * @param ev The event to be logged. */ public void log(ILogEvent ev) throws ELogException { if (ev instanceof AuditEvent) { @@ -1069,7 +1067,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { if (!mType.equals("system") || (!mOn) || mLevel > ev.getLevel()) { return; } - } else if (ev instanceof SignedAuditEvent) { + } else if (ev instanceof SignedAuditEvent) { if (!mType.equals("signedAudit") || (!mOn) || mLevel > ev.getLevel()) { return; } @@ -1082,7 +1080,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { String type = ev.getEventType(); if (type != null) { if (!mSelectedEvents.contains(type)) { - CMS.debug("LogFile: event type not selected: "+type); + CMS.debug("LogFile: event type not selected: " + type); return; } } @@ -1120,8 +1118,8 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * change multi-line log entry by replace "\n" with "\n " - * - * @param original The original multi-line log entry. + * + * @param original The original multi-line log entry. */ private String prepareMultiline(String original) { int i, last = 0; @@ -1138,12 +1136,12 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { * Read all entries whose logLevel>=lowLevel && log source = source * to at most maxLine entries(from end) * If the parameter is -1, it's ignored and return all entries - * + * * @param maxLine The maximum lines to be returned * @param lowLevel The lowest log level to be returned * @param source The particular log source to be returned * @param fName The log file name to be read. If it's null, read the current - * log file + * log file */ public Vector<LogEntry> readEntry(int maxLine, int lowLevel, int source, String fName) { Vector<LogEntry> mEntries = new Vector<LogEntry>(); @@ -1152,7 +1150,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { int lineNo = 0; // lineNo of the current entry in the log file int line = 0; // line of readed valid entries String firstLine = null; // line buffer - String nextLine = null; + String nextLine = null; String entry = null; LogEntry logEntry = null; @@ -1162,7 +1160,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { this implementation is assuming parsing is more time consuming than condition check */ - LogEntry preLogEntry = null; + LogEntry preLogEntry = null; if (fName != null) { fileName = fName; @@ -1194,9 +1192,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { // if parse succeed, write out previous entry if (preLogEntry != null) { if ((Integer.parseInt(preLogEntry.getLevel()) >= lowLevel) && - ((Integer.parseInt(preLogEntry.getSource()) == source) || + ((Integer.parseInt(preLogEntry.getSource()) == source) || (source == ILogger.S_ALL) - )) { + )) { mEntries.addElement(preLogEntry); if (maxLine == -1) { line++; @@ -1223,13 +1221,12 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } catch (IOException e) { CMS.getLogger().log(ILogger.EV_SYSTEM, ILogger.S_OTHER, - ILogger.LL_FAILURE, - CMS.getLogMessage("LOGGING_READ_ERROR", fileName, - Integer.toString(lineNo))); + ILogger.LL_FAILURE, + CMS.getLogMessage("LOGGING_READ_ERROR", fileName, + Integer.toString(lineNo))); } - } - while (nextLine != null); + } while (nextLine != null); // need to process the last 2 entries of the file if (firstLine != null) { @@ -1248,9 +1245,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { */ if (preLogEntry != null) { if ((Integer.parseInt(preLogEntry.getLevel()) >= lowLevel) && - ((Integer.parseInt(preLogEntry.getSource()) == source) || + ((Integer.parseInt(preLogEntry.getSource()) == source) || (source == ILogger.S_ALL) - )) { + )) { mEntries.addElement(preLogEntry); if (maxLine == -1) { line++; @@ -1268,11 +1265,11 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { if (preLogEntry != null) { if ((Integer.parseInt(preLogEntry.getLevel()) >= lowLevel) - && - ((Integer.parseInt(preLogEntry.getSource()) == source) + && + ((Integer.parseInt(preLogEntry.getSource()) == source) || (source == ILogger.S_ALL) - )) { + )) { // parse the entry, pass to UI mEntries.addElement(preLogEntry); if (maxLine == -1) { @@ -1291,15 +1288,15 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { fBuffer.close(); } catch (IOException e) { CMS.getLogger().log(ILogger.EV_SYSTEM, ILogger.S_OTHER, - ILogger.LL_FAILURE, "logging:" + fileName + - " failed to close for reading"); + ILogger.LL_FAILURE, "logging:" + fileName + + " failed to close for reading"); } } catch (FileNotFoundException e) { CMS.getLogger().log(ILogger.EV_SYSTEM, ILogger.S_OTHER, - ILogger.LL_FAILURE, - CMS.getLogMessage("LOGGING_FILE_NOT_FOUND", - fileName)); + ILogger.LL_FAILURE, + CMS.getLogMessage("LOGGING_FILE_NOT_FOUND", + fileName)); } return mEntries; } @@ -1307,7 +1304,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Retrieves the configuration store of this subsystem. * <P> - * + * * @return configuration store */ public IConfigStore getConfigStore() { @@ -1316,7 +1313,7 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Retrieve last "maxLine" number of system log with log lever >"level" - * and from source "source". If the parameter is omitted. All entries + * and from source "source". If the parameter is omitted. All entries * are sent back. */ public synchronized NameValuePairs retrieveLogContent(Hashtable<String, String> req) throws ServletException, @@ -1324,18 +1321,18 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { NameValuePairs params = new NameValuePairs(); String tmp, fName = null; int maxLine = -1, level = -1, source = -1; - Vector<LogEntry> entries = null; + Vector<LogEntry> entries = null; - if ((tmp = (String)req.get(Constants.PR_LOG_ENTRY)) != null) { + if ((tmp = (String) req.get(Constants.PR_LOG_ENTRY)) != null) { maxLine = Integer.parseInt(tmp); } - if ((tmp = (String)req.get(Constants.PR_LOG_LEVEL)) != null) { + if ((tmp = (String) req.get(Constants.PR_LOG_LEVEL)) != null) { level = Integer.parseInt(tmp); } - if ((tmp = (String)req.get(Constants.PR_LOG_SOURCE)) != null) { + if ((tmp = (String) req.get(Constants.PR_LOG_SOURCE)) != null) { source = Integer.parseInt(tmp); } - tmp = (String)req.get(Constants.PR_LOG_NAME); + tmp = (String) req.get(Constants.PR_LOG_NAME); if (!(tmp.equals(Constants.PR_CURRENT_LOG))) { fName = tmp; } else { @@ -1346,12 +1343,12 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { entries = readEntry(maxLine, level, source, fName); for (int i = 0; i < entries.size(); i++) { params.add(Integer.toString(i) + - ((LogEntry) entries.elementAt(i)).getEntry(), ""); + ((LogEntry) entries.elementAt(i)).getEntry(), ""); } } catch (Exception e) { CMS.getLogger().log(ILogger.EV_SYSTEM, ILogger.S_OTHER, - ILogger.LL_WARN, - "System log parse error"); + ILogger.LL_WARN, + "System log parse error"); } return params; } @@ -1386,9 +1383,9 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { // is not for the signed audit type, then we should not show the // following parameters. //if( mType.equals( ILogger.PROP_SIGNED_AUDIT ) ) { - v.addElement( PROP_SIGNED_AUDIT_LOG_SIGNING + "=" ); - v.addElement( PROP_SIGNED_AUDIT_CERT_NICKNAME + "=" ); - v.addElement( PROP_SIGNED_AUDIT_EVENTS + "=" ); + v.addElement(PROP_SIGNED_AUDIT_LOG_SIGNING + "="); + v.addElement(PROP_SIGNED_AUDIT_CERT_NICKNAME + "="); + v.addElement(PROP_SIGNED_AUDIT_EVENTS + "="); //} return v; @@ -1401,11 +1398,11 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { if (mType == null) { v.addElement(PROP_TYPE + "="); - }else { + } else { v.addElement(PROP_TYPE + "=" + - mConfig.getString(PROP_TYPE)); + mConfig.getString(PROP_TYPE)); } - v.addElement(PROP_ON + "=" + String.valueOf( mOn ) ); + v.addElement(PROP_ON + "=" + String.valueOf(mOn)); if (mLevel == 0) v.addElement(PROP_LEVEL + "=" + ILogger.LL_DEBUG_STRING); else if (mLevel == 1) @@ -1423,29 +1420,29 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { if (mFileName == null) { v.addElement(PROP_FILE_NAME + "="); - }else { + } else { v.addElement(PROP_FILE_NAME + "=" + - mFileName); + mFileName); } v.addElement(PROP_BUFFER_SIZE + "=" + mBufferSize); v.addElement(PROP_FLUSH_INTERVAL + "=" + mFlushInterval / 1000); - if( (mType != null) && mType.equals( ILogger.PROP_SIGNED_AUDIT ) ) { - v.addElement( PROP_SIGNED_AUDIT_LOG_SIGNING + "=" - + String.valueOf( mLogSigning ) ); + if ((mType != null) && mType.equals(ILogger.PROP_SIGNED_AUDIT)) { + v.addElement(PROP_SIGNED_AUDIT_LOG_SIGNING + "=" + + String.valueOf(mLogSigning)); - if( mSAuditCertNickName == null ) { - v.addElement( PROP_SIGNED_AUDIT_CERT_NICKNAME + "=" ); + if (mSAuditCertNickName == null) { + v.addElement(PROP_SIGNED_AUDIT_CERT_NICKNAME + "="); } else { - v.addElement( PROP_SIGNED_AUDIT_CERT_NICKNAME + "=" - + mSAuditCertNickName ); + v.addElement(PROP_SIGNED_AUDIT_CERT_NICKNAME + "=" + + mSAuditCertNickName); } - if( mSelectedEventsList == null ) { - v.addElement( PROP_SIGNED_AUDIT_EVENTS + "=" ); + if (mSelectedEventsList == null) { + v.addElement(PROP_SIGNED_AUDIT_EVENTS + "="); } else { - v.addElement( PROP_SIGNED_AUDIT_EVENTS + "=" - + mSelectedEventsList ); + v.addElement(PROP_SIGNED_AUDIT_EVENTS + "=" + + mSelectedEventsList); } } } catch (Exception e) { @@ -1454,30 +1451,30 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { } public String[] getExtendedPluginInfo(Locale locale) { - if( mType.equals( ILogger.PROP_SIGNED_AUDIT ) ) { + if (mType.equals(ILogger.PROP_SIGNED_AUDIT)) { String[] params = { - PROP_TYPE + ";choice(transaction,signedAudit,system);The log event type this instance is listening to", - PROP_ON + ";boolean;Turn on the listener", - PROP_LEVEL + ";choice(" + ILogger.LL_DEBUG_STRING + "," + - ILogger.LL_INFO_STRING + "," + - ILogger.LL_WARN_STRING + "," + - ILogger.LL_FAILURE_STRING + "," + - ILogger.LL_MISCONF_STRING + "," + - ILogger.LL_CATASTRPHE_STRING + "," + - ILogger.LL_SECURITY_STRING + ");Only log message with level higher than this filter will be written by this listener", - PROP_FILE_NAME + ";string;The name of the file the log is written to", - PROP_BUFFER_SIZE + ";integer;The size of the buffer to receive log messages in kilobytes(KB)", - PROP_FLUSH_INTERVAL + ";integer;The maximum time in seconds before the buffer is flushed to the file", - IExtendedPluginInfo.HELP_TOKEN + - ";configuration-logrules-logfile", - IExtendedPluginInfo.HELP_TEXT + - ";Write the log messages to a file", - PROP_SIGNED_AUDIT_LOG_SIGNING + - ";boolean;Enable audit logs to be signed", - PROP_SIGNED_AUDIT_CERT_NICKNAME + - ";string;The nickname of the certificate to be used to sign audit logs", - PROP_SIGNED_AUDIT_EVENTS + - ";string;A comma-separated list of strings used to specify particular signed audit log events", + PROP_TYPE + ";choice(transaction,signedAudit,system);The log event type this instance is listening to", + PROP_ON + ";boolean;Turn on the listener", + PROP_LEVEL + ";choice(" + ILogger.LL_DEBUG_STRING + "," + + ILogger.LL_INFO_STRING + "," + + ILogger.LL_WARN_STRING + "," + + ILogger.LL_FAILURE_STRING + "," + + ILogger.LL_MISCONF_STRING + "," + + ILogger.LL_CATASTRPHE_STRING + "," + + ILogger.LL_SECURITY_STRING + ");Only log message with level higher than this filter will be written by this listener", + PROP_FILE_NAME + ";string;The name of the file the log is written to", + PROP_BUFFER_SIZE + ";integer;The size of the buffer to receive log messages in kilobytes(KB)", + PROP_FLUSH_INTERVAL + ";integer;The maximum time in seconds before the buffer is flushed to the file", + IExtendedPluginInfo.HELP_TOKEN + + ";configuration-logrules-logfile", + IExtendedPluginInfo.HELP_TEXT + + ";Write the log messages to a file", + PROP_SIGNED_AUDIT_LOG_SIGNING + + ";boolean;Enable audit logs to be signed", + PROP_SIGNED_AUDIT_CERT_NICKNAME + + ";string;The nickname of the certificate to be used to sign audit logs", + PROP_SIGNED_AUDIT_EVENTS + + ";string;A comma-separated list of strings used to specify particular signed audit log events", }; return params; @@ -1485,22 +1482,22 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { // mType.equals( ILogger.PROP_AUDIT ) || // mType.equals( ILogger.PROP_SYSTEM ) String[] params = { - PROP_TYPE + ";choice(transaction,signedAudit,system);The log event type this instance is listening to", - PROP_ON + ";boolean;Turn on the listener", - PROP_LEVEL + ";choice(" + ILogger.LL_DEBUG_STRING + "," + - ILogger.LL_INFO_STRING + "," + - ILogger.LL_WARN_STRING + "," + - ILogger.LL_FAILURE_STRING + "," + - ILogger.LL_MISCONF_STRING + "," + - ILogger.LL_CATASTRPHE_STRING + "," + - ILogger.LL_SECURITY_STRING + ");Only log message with level higher than this filter will be written by this listener", - PROP_FILE_NAME + ";string;The name of the file the log is written to", - PROP_BUFFER_SIZE + ";integer;The size of the buffer to receive log messages in kilobytes(KB)", - PROP_FLUSH_INTERVAL + ";integer;The maximum time in seconds before the buffer is flushed to the file", - IExtendedPluginInfo.HELP_TOKEN + - ";configuration-logrules-logfile", - IExtendedPluginInfo.HELP_TEXT + - ";Write the log messages to a file" + PROP_TYPE + ";choice(transaction,signedAudit,system);The log event type this instance is listening to", + PROP_ON + ";boolean;Turn on the listener", + PROP_LEVEL + ";choice(" + ILogger.LL_DEBUG_STRING + "," + + ILogger.LL_INFO_STRING + "," + + ILogger.LL_WARN_STRING + "," + + ILogger.LL_FAILURE_STRING + "," + + ILogger.LL_MISCONF_STRING + "," + + ILogger.LL_CATASTRPHE_STRING + "," + + ILogger.LL_SECURITY_STRING + ");Only log message with level higher than this filter will be written by this listener", + PROP_FILE_NAME + ";string;The name of the file the log is written to", + PROP_BUFFER_SIZE + ";integer;The size of the buffer to receive log messages in kilobytes(KB)", + PROP_FLUSH_INTERVAL + ";integer;The maximum time in seconds before the buffer is flushed to the file", + IExtendedPluginInfo.HELP_TOKEN + + ";configuration-logrules-logfile", + IExtendedPluginInfo.HELP_TEXT + + ";Write the log messages to a file" }; return params; @@ -1509,27 +1506,25 @@ public class LogFile implements ILogEventListener, IExtendedPluginInfo { /** * Signed Audit Log - * + * * This method is inherited by all classes that extend this "LogFile" * class, and is called to store messages to the signed audit log. * <P> - * + * * @param msg signed audit log message */ - protected void audit( String msg ) - { + protected void audit(String msg) { // in this case, do NOT strip preceding/trailing whitespace // from passed-in String parameters - if( mSignedAuditLogger == null ) { + if (mSignedAuditLogger == null) { return; } - mSignedAuditLogger.log( ILogger.EV_SIGNED_AUDIT, + mSignedAuditLogger.log(ILogger.EV_SIGNED_AUDIT, null, ILogger.S_SIGNED_AUDIT, ILogger.LL_SECURITY, - msg ); + msg); } } - |