-------------------------------------------------------------------------- Document: Syslog4j CHANGELOG.txt Version: $Id: CHANGELOG.txt,v 1.52 2010/06/26 22:06:36 cvs Exp $ URL: http://www.syslog4j.org/ -------------------------------------------------------------------------- Version 0.9.37 (06/26/2010) + Added HTMLEntityEscapeSyslogModifier to ensure HTML-based log messages are escaped before being received by the server; this prevents malicious log entries from executing code on browsers when using poorly-written log viewer software (Thanks for the idea, Rob!) + JUnit test improvements; 80.7% instruction code coverage (EclEmma) (when executed on MacOSX) -------------------------------------------------------------------------- Version 0.9.36 (06/13/2010) + BUG FIX: Modified UnixSyslog to pass in a Memory object to openlog(..) instead of a String value (Thanks, Maik!) -------------------------------------------------------------------------- Version 0.9.35 (03/25/2010) + BUG FIX: Modified TCPNetSyslogWriter's shutdown() method to properly check for null or closed sockets, take 2 (Thanks, Vladimir!) -------------------------------------------------------------------------- Version 0.9.34 (03/19/2010) + BUG FIX: Modified TCPNetSyslogWriter's shutdown() method to properly check for null or closed sockets (Thanks, Vladimir!) -------------------------------------------------------------------------- Version 0.9.33 (02/27/2010) + BUG FIX: Modified UnixSocketSyslog to create the socket upon first write; prior to this version, the stock "unix_socket" protocol's configuration could not be modified + Successfully tested Syslog4j's unix_socket and unix_syslog protocols on MacOSX version 10.6.2 + JUnit test improvements; 78.4% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.32 (02/10/2010) + BUG FIX: AbstractSyslog.write(SyslogMessageProcessorIF,int,String) modified to properly handle Unicode messages (thanks, Brett!) + SyslogIF modified with getter/setter for StructuredSyslogMessageProcessor + Improvements to AbstractSyslog.log(..) methods to more properly handle StructuredSyslogMessageProcessor configurations + JUnit test improvements; 78.3% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.31 (02/03/2010) + BUG FIX: ChecksumSyslogMessageModifier was computing a "continuous" checksum, meaning that the checksum was being generated based on the current and all previous messages going through this message modifier instead of being computed solely on the current message. In case there are some users expecting or desiring this behavior, ChecksumSyslogMessageModifierConfig now has a setContinuous(boolean) method which is defaulted to a false value (the way it was intended to work). Those users must set this to a true value. + Added RFC3339TimestampUtility to robustly handle RFC3339-formatted dates (Thanks, Chad!) + Improved date handling in StructuredSyslogServerEvent by using RFC3339TimestampUtility + Switched default instances in SyslogMessageProcessor and StructuredSyslogMessageProcessor from interfaces to classes + JUnit test improvements; 77.8% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.30 (07/25/2009) + Support added for "structured syslog" as defined here: http://tools.ietf.org/html/draft-ietf-syslog-protocol-23 Code submitted by Manish Motwani (thanks, Manish!) + Renamed SyslogIF.fatal(..) methods to SyslogIF.emergency(..) to be consistent with RFC 3164 + Fixed copy/paste errors with SyslogIF.notice(..), SyslogIF.critical(..), and SyslogIF.alert(..) levels + Fixed Log4jSyslogBackLogHandler.getLog4jLevel(..) to more accurately convert syslog levels to Log4J levels + Set sendLocalName to false by default for UnixSocketSyslog + Improved UnixSyslog by using synchronization to support multiple facilities by calling the static openlog(..) and closelog() methods as necessary when the facility is "switched" between instances (thanks, Ken!) + Added Syslog4jBackLogHandler which allows another Syslog4j protocol to be used for back logging + JUnit test improvements; 77.5% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.29 (06/06/2009) + Added support for message truncation (instead of splitting messages into more than one event) via SyslogConfigIF.setTruncateMessage(true) + Added more configuration options to Syslog4jAppenderSkeleton + Moved maxMessageLength to SyslogConfigIF + Set sendLocalName to false by default for UnixSyslog (credit: Nathan) + Removed unnecessary check for sub-zero length String in AbstractSyslog (credit: Darien) + JUnit test improvements; 76.8% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.28 (06/03/2009) + Override added for UnixSyslog.prefixMessage(..) to remove support for adding the "ident" value, which is redundant since Unix-based syslog configures the ident within the openlog(..) method (thanks to Nathan) + Switched empty String in ident to a null before passing into openlog; this substitutes the name of the running program for the ident field -------------------------------------------------------------------------- Version 0.9.27 (04/16/2009) + Added main() methods to Syslog and SyslogServer for a rudimentary command-line client/server implementations; coded in separate SyslogMain and SyslogServerMain classes + Added notice(..), critical(..), and alert(..) methods to adhere more completely with RFC 3164 + SyslogServerEvent now parses incoming log data to determine level, facility, date, and host + Several fixes to accommodate remote InetAddress information for SyslogServerEvent + Added SyslogUtility.getLevel(String) + JUnit test improvements; 76.4% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.26 (03/29/2009) + Added SSLTCPNetSyslogServer and supporting classes for SSL/TLS server support + Added keyStore, trustStore, keyStorePassword, and trustStorePassword configuration options to SSL/TLS-related configuration classes + Refactored some configuration/method naming for consistency + JUnit test improvements; 76.0% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.25 (01/27/2009) + Removed delimiterSequence code from SyslogMessageProcessorIF, SyslogMessageProcessor, AbstractSyslog, and all calling subclasses; instead, a separate OutputStream.write(..) is called for the delimiter + Added a Socket.setSendBufferSize(..) call to TCPNetSyslogWriter; this is combined with the delimiterSequence moved to a separate OutputStream.write(..) call solves a problem where a single message was lost every time a connection failure occurred between Syslog4j and a syslog TCP server + Added more configuration properties to TCPNetSyslogConfig[IF] to remove hard-coded values + JUnit test improvements; 75.1% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.24 (01/24/2009) + Fixes to AbstractSyslog and TCPNetSyslogWriter to properly handle when TCP-based Syslog servers stop accepting connections and then resume accepting connections + BacklogHandler down() and up() methods now working properly + Added maxAttempts to TCPNetSyslogConfig[IF] to remove hard-coded "try twice" loop for trying twice to write a message to a TCP-based Syslog server + Renamed all naming of "backlog" to "backLog" and "Backlog" to "BackLog" for consistency's sake; except for the literal TCP Socket concept of "backlog" + Fixed MultipleSyslog.getProtocol() to actually return protocol name + JUnit test improvements; 75.0% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.23 (01/23/2009) + Added Log4jSyslogBacklogHandler to use Log4j as a backup if a Syslog protocol fails + Improvements to BacklogHandlers to flag "up" and "down" conditions. + TCPNetSyslog fixed getWriter(..) to not create new threads upon a flush() or shutdown() call -------------------------------------------------------------------------- Version 0.9.22 (12/09/2008) + Refactored SyslogConfigIF and AbstractSyslogConfig to use more interfaces (AbstractSyslogConfigIF, AbstractNetSyslogConfigIF, TCPNetSyslogConfigIF) in order to reduce forced casts and forced inheritance models + JUnit test improvements; 74.1% instruction code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.21 (11/26/2008) + Modified PooledTCPNetSyslogConfig to force maxIdle, minIdle, and maxActive to the same value when isThreaded is true + TCPNetSyslog overridden for backlog(..) methods to strip delimiter from message + Fixed SyslogServer.exists(String protocol) to be case insensitive + JUnit test improvements; now at 72.2% code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.20 + Added writeAttempts option to retry after a single Socket exception; defaults to 2 + Bugfixes relating to SyslogBacklogHandlers + JUnit test improvements; now at 72.1% code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.19 + Numerous bugfixes relating to the Writer, TCPNetSyslog, and SSLTCPNetSyslog implementations + Performance/reliability improvements related to Thread handling + JUnit test improvements; maintained 71.3% code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.18 + Added SyslogBacklogHandlerIF, PrintStreamSyslogBacklogHandler, SystemErrSyslogBacklogHandler, and SystemOutSyslogBacklogHandler for handling logging when a failure occurs + Added support for Apache Commons Pooling for the TCP-based protocols, with NetSyslogPoolFactory, PooledTCPNetSyslog, PooledTCPNetSyslogConfig, and PooledSSLTCPNetSyslogConfig + Reworked the "Writer" implementation into AbstractNetWriter to support pooling + Added Threaded JUnit tests for TCP, UDP, and pooling + Added MultipleSyslog and MultipleSyslogConfig to conveniently send to more than one Syslog server simultaneously + JUnit test improvements; now at 71.3% code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.17 + Added support for secure syslog messages (via TCP over SSL) with SSLTCPNetSyslogWriter and SSLTCPNetSyslogConfig classes + Refactored several classes to introduce the "ident" concept to all syslog implementations in lieu of only the UnixSyslog syslog implementation + Refactored PCISyslogMessage to remove appId (for good this time) + Created Syslog.initialize(), Syslog.shutdown(), SyslogServer.initialize(), and SyslogServer.shutdown() + JUnit test improvements; now at 70.2% code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.16 + OSDetectUtility.isWindows() fixed + JUnit test improvements; now at 66.8% code coverage (EclEmma) -------------------------------------------------------------------------- Version 0.9.15 + Added appId to PCISyslogMessage + Moved StringCaseSyslogMessageModifier into the "text" subpackage + Added PrefixSyslogMessageModifier and SuffixSyslogMessageModifier + Added helper create methods to MacSyslogMessageModifier -------------------------------------------------------------------------- Version 0.9.14 + Added AbstractSyslogMessage for creating POJOs for logging + Added PCISyslogMessageIF and PCISyslogMessage to support PCI DSS audit logging (see PCISyslogMessage Javadoc for details) + Moved the syslog packet processing code out of SyslogUtility into SyslogMessageProcessor (implements SyslogMessageProcessorIF interface) allowing it to be customized + Reorganized messagemodifier and some server classes into more logical package structures -------------------------------------------------------------------------- Version 0.9.13 + Added Thread support to TcpNetSyslog implementation; added TcpNetSyslogWriter to facilitate + Modified TcpNetSyslogServer and UdpNetSyslogServer to support binding to a specific host + Modified TcpNetSyslogServer to support ServerSocket's "backlog" parameter + Modified ChecksumSyslogMessageModifier and HashSyslogMessageModifier classes to not statically create convenience instances (may have issues on some non-Sun JCE implementations) + Documentation improvements -------------------------------------------------------------------------- Version 0.9.12 + Added DNS address caching mechanism to TCP and UDP implementations (introduced AbstractNetSyslog for this) + Documentation additions to the FAQ -------------------------------------------------------------------------- Version 0.9.11 + Switched Base64Encoder/Base64Decoder with public domain Base64 class (http://iharder.sourceforge.net/current/java/base64/) for speed improvement; added Base64CompareTest which was used to validate the speed improvement + Added convenience methods in SyslogServer for creating Threads + Added thread getter/setter in SyslogServerIF and AbstractSyslogServer -------------------------------------------------------------------------- Version 0.9.10 + Added Log4j Appender support via Syslog4jAppenderSkeleton and Syslog4jAppender (both are works in progress) -------------------------------------------------------------------------- Version 0.9.9 + Added SequentialSyslogMessageModifier -------------------------------------------------------------------------- Version 0.9.8 + Added SyslogServerEventIF interface + Modified ANT build process to include debug flags when compiling classes for syslog4j-x.y.z.jar (source + binary) + Documentation additions -------------------------------------------------------------------------- Version 0.9.7 + Added StringCaseSyslogMessageModifier, HashSyslogMessageModifier, MacSyslogMessageModifier, and improved ChecksumSyslogMessageModifier + Added test cases to SyslogMessageModifierTest -------------------------------------------------------------------------- Version 0.9.6 + Added SyslogMessageModifierIF to allow checksums, hashes, etc. to be added to each message + Added ChecksumSyslogMessageModifier, LowerCaseSyslogMessageModifier, and UpperCaseSyslogMessageModifier + Added SyslogMessageModifierTest JUnit test case + Created getBytes(config) method to SyslogUtility to remove need for UnsupportedEncodingException catches in every class that uses it -------------------------------------------------------------------------- Version 0.9.5 + Added setSoLinger(true,1) for TCP client to solve lost packets problem on Unix (and potentially other platforms) + Documentation improvements -------------------------------------------------------------------------- Version 0.9.4 + Removed forced dependency on JNA -------------------------------------------------------------------------- Version 0.9.3 + Preliminary support for Unix Domain Sockets (AF_UNIX) using JNI -------------------------------------------------------------------------- Version 0.9.2 + Cleanup, test cases, etc. -------------------------------------------------------------------------- Version 0.9.1 + Initial working TCP/UDP build -------------------------------------------------------------------------- Version 0.9.0 + Project started --------------------------------------------------------------------------