The Cacti Group | spine

1.2.20
-issue#233: Add support for newer versions of MySQL/MariaDB
-issue#238: When checking for uptime of device, don't assume a non-responce is always fatal
-issue#240: When compiling, newer systems may complain about obsolete macros
-issue#241: When querying devices, long descriptions can become truncated
-issue#243: When compiling, FreeBSD may complain about missing backtrace functions
-issue#244: When building queries, commands may become truncated
-issue#247: When compiling with SNMPv3 support, SHA256 may incorrectly appear to be not supported
-feature#252: Improve spine performance when only one snmp agent port is in use

1.2.19
-issue#172: Issues with polling loop may skip some datasources
-issue#209: Ping no longer works due to hostname changes
-issue#216: RRD steps are not always calculated correctly
-issue#220: Unable to build when DES no longer supported
-issue#221: IPv6 devices are not properly parsed
-issue#226: Reduce a number of compiler warnings
-issue#227: Compiler warnings due to lack of return in thread_mutex_trylock
-issue#237: Spine will not look at non-timetics uptime when sysUpTimeInstance overflows
-feature#235: Improve performance of Cacti poller on heavily loaded systems

1.2.18
-issue#207: Missing time parameter on FROM_UNIXTIME function

1.2.17
-issue#178: When building spine, errors with Percona libraries may appear by tersmitten
-issue#184: When building spine, make process can report problems with backtrace
-issue#186: When opening the database, spine can unexpectedly crash
-issue#187: On large systems, too many connections can cause firewalls to assume a DDoS attack
-issue#192: Spine does not properly use the mysql reconnect option
-issue#193: When performing certain re-index operations, spine can unexpectedly crash
-issue#194: When logging to standard output, log messaging is inconsistent
-issue#195: When using newer gcc versions, spine is unable to compile properly
-issue#197: Remote data collectors push too much data to main when performing diagnostics
-issue#200: Make spine more responsive when remote connection is down
-issue#202: MySQL SSL Key capability check does not work
-issue#203: Backtracing support checks do not work
-issue#204: MySQL Retry Count capability check always fails
-feature: Make spine immune to DST changes
-feature#181: Parse hostnames from tcp[6]:hostname:port [not fully implemented]
-feature#188: On large systems, more concurrent script servers are needed

1.2.16
-issue: Some developer debug log messages falsely labeled as WARNINGS
-issue#164: Remove the need of the dos2unix program
-issue#171: Spine experiencing MySQL socket error 2002 under load
-issue#175: Under heavy load MySQL/MariaDB return 2006 and 2013 errors on query
-feature: Add backtrace output to stderr for signals
-feature#176: Add Data Source turnaround time to debug output

1.2.15
-issue#166: Special characters may not always be ignored properly
-issue#168: Correct issues with linking under OpenBSD

1.2.14
-issue#162: Spine not updating rrd_next_step

1.2.13
-issue#156: Compile on Cygwin is failing due to icmp6 headers missing

1.2.12
-issue#155: Failed host lookup causes spine to crash

1.2.11
-issue#122: Unable to compile spine on OpenBSD
-issue#129: Repeated warnings due to 'Recache Event Detected for Device'
-issue#134: No error is recorded to log file when database is incorrect
-issue#144: MySQL retry logic is not working as expected
-issue#149: When using IPv6 address, segmentation fault can occur due to incorrectly using IPv4 ping
-issue#150: When polling results are null, segmentation errors may occur
-issue#151: When collecting data, spine should be stripping alpha characters from output

1.2.10
-feature: release to match Cacti release

1.2.9
-issue#124: Improve logging of snmp multiple OID get function
-issue#129: PCOMMAND Device[XXXX] WARNING: Recache Event Detected for Device
-issue#130: Segmentation Fault triggered by a lot of errors
-issue#131: Replace function gethostbyname with thread safe getaddrinfo
-issue#139: removed strip_alpha for "Wrong-Type" SNMP-Answer

1.2.8
-issue#119: When calling bootstrap, an invalid error claiming config.h.in is missing can appear on first compile

1.2.7
-issue#113: When compiling under CentOS, 'm4' directory appears to be missing
-issue#115: Perform proper initialization and teardown of sockets under Windows
-issue#117: Spine configuration example shows remote database prefix for local database values

1.2.6
-issue#101: MySQL 8 has retired 'my_bool' type
-issue#104: Spine should report which threads are outstanding
-issue#105: Spine should include 'Process[<id>]' in standard logging
-issue#107: Log Buffer is too small to handle some output
-issue#108: Once an SNMP timeout is reached, snmp_get does not honor include_host
-issue#109: Initial declarations inside for loop cause compile errors
-issue#110: When compiling, 'directive output may be truncated' messages can appear
-issue#112: INSTALL instructions have typo in bootstrap command

1.2.5
-issue: Improve detection of MySQL vs. MariaDB client library requirement
-issue#98: Checking type in poller.c causes compiler error

1.2.4
-issue#92: Add Data Source ID to "Empty result' error messages
-issue#94: Increase default 'results_buffer' size to 2048 and MySQL max buffer to 131072 bytes

1.2.3
-issue#76: Spine unhandled exception signal
-issue: More recent versions of MariaDB require different client library

1.2.2
-feature: release to match Cacti release

1.2.1
-feature: release to match Cacti release

1.2.0
-feature: Allow threads to be set a Data Collector level
-issue#50: make fails on Debian 7 attempting to locate clock_gettime
-issue#53: Improved escaping when updating database records
-issue#54: Spine should always log if ICMP fails
-issue#58: When updating snmp_sysLocation, text can become truncated
-issue#63: Automatically reduce device threads when number of data sources does not require it

1.1.38
-feature: release to match Cacti release

1.1.37
-issue: Extra long snmp_sysObjectID's generate SQL errors

1.1.36
-issue#49: Re-Index update query failed due to lack of escaping

1.1.35
-issue#48: Availability check none triggers snmp system check that causes device to be ignored

1.1.34
-feature: release to match Cacti release

1.1.33
-feature: release to match Cacti release

1.1.32
-feature: release to match Cacti release

1.1.31
-issue#15: Spine cause CPU usage up to 100%
-issue#32: Support noAuthNoPriv in Spine
-issue#34: Re-introduce check for relocatable Net-SNMP and development files
-issue#35: SNMP OID range checks cause some snmpget's to fail
-issue#38: SNMP Ping timeouts not reported properly
-issue#39: Spine should use same logging format as Cacti
-issue#41: Spine cause CPU usage up to 100%
-issue#42: Boost table keeps populating with boost disabled

1.1.30
-feature: release to match Cacti release

1.1.29
-issue#39: Have spine match cacti_log function

1.1.28
-feature: release to match Cacti release

1.1.27
-feature: release to match Cacti release

1.1.26
-feature: release to match Cacti release

1.1.25
-feature: release to match Cacti release

1.1.24
-feature: release to match Cacti release

1.1.23
-feature: release to match Cacti release

1.1.22
-feature: release to match Cacti release

1.1.21
-feature: release to match Cacti release

1.1.20
-issue#28: UDP and TCP ping issues

1.1.19
-feature: release to match Cacti release

1.1.18
-issue: Sort devices by polling time to allow long running devices to go first

1.1.17
-issue: Increase logging level for POPEN timeouts

1.1.16
-feature: release to match Cacti release

1.1.15
-feature: release to match Cacti release

1.1.14
-feature: release to match Cacti release

1.1.13
-issue: Script timeout should start after semaphore releases
-issue: Don't include line breaks in Syslog

1.1.12
-feature: release to match Cacti release

1.1.11
-feature: release to match Cacti release

1.1.10
-feature: release to match Cacti release

1.1.9
-feature: release to match Cacti release

1.1.8
-issue#21: Errors when snmp_sysLocation contains a single quote

1.1.7
-feature: release to match Cacti release

1.1.6
-issue#15: Spine can cause high CPU utilization due to semaphore implementation
-issue#11: Spine reports SNMP timeouts in some cases when gathering multiple OID in one request

1.1.4
-feature: release to match Cacti release

1.1.3
-feature: release to match Cacti release

1.1.2
-issue#13: Spine does not compile with --enable-lcap
-issue#16: Spine not handling debug devices correctly

1.1.1
-feature: release to match Cacti release

1.1.0
-feature: release to match Cacti release

1.0.6
-feature: release to match Cacti release

1.0.5
-issue#7: remove database name not respected

1.0.4
-feature: release to match Cacti release

1.0.3
-issue#6: Spine accepts arbitrary polling modes

1.0.2
-feature: release to match Cacti release

1.0.1
-bug:With enough make jobs, help2man will fail if help2man is run before spine has been built

1.0.0
-feature: Track per host polling time
-feature: Collect System Mib Information
-feature: Place collection timing into host table
-feature: Support snmpContextEngineID
-feature: Change all references of Host to Device
-bug:0001415: spine does not handle log_perror
-bug#0002220: spine/cacti patch to allow SNMP_polling decices' hostnames like user@host:port
-bug#0002234: Wrong alphanumeric value got from Spine SNMP poller
-bug#0002651: False Positive Down status with snmpv3
-bug#0002674: Segmentation fault in Spine during polling host

0.8.8h
-bug:0002659: wrong information about spine setup for icmps
-bug: Removed requirement for building man page, deferred to 1.0

0.8.8g
-bug:0002380: please build man page for spine
-bug:0002610: Spine is trying to use mysql results after data being freed
-bug:0002639: Spine does not respect snmp_retries from the database
-bug:0002640: Spine crashes randomly while polling using multiple threads on one device
-bug:0002549: Spine: hasCaps() always returns FALSE
-bug:0002638: Spine: ping_udp() uses uninitialised socket timeout
-bug:0002654: On RHEL 6.5, spine ./configure builds Makefile without crypto support

0.8.8f
-bug:0002604: cacti-spine, configure script ignores LDFLAGS in certain situations

0.8.8e
-bug#0002185: Multiple memory leaks found in spine
-bug#0002398: Buffer overflow
-bug#0002447: Building spine on Debian Jessie (testing) fails
-bug#0002536: Spine segfaults when 18k+ hosts are to be pulled
-bug#0002576: Call to a non-existent column of the database in poller.c
-bug#0002578: spine doesn't compile on ubuntu 12.04
-bug#0002585: Spine: buffer overflow in logging when RESULTS_BUFFER>LOGSIZE can SEGV
-bug#0002588: Spine "is_numeric" incorrectly returns TRUE for some hexadecimal values

0.8.8d
-feature: add snmp system information gathering

0.8.8c
-bug: remove obsolete reference causing pre-compile issues

0.8.8b
-bug: set appropriate mysql 5.5+ timeouts

0.8.8a
-bug#0002204: spine corrupted double-linked list error
-bug#0002206: On multi-architecture Debian platforms spine fails to build
-bug#0002205: Typo, twice, in spine.c: absense -> absence

0.8.8
-bug#0002185: Multiple memory leaks found in spine

0.8.7i
-bug: Rework the way ping works, due to bad impact of changes in 0.8.7h
-bug: ICMP ping not working on windows due to cygwin change
-bug: Linux capabilities reported as on regardless of state
-feature: Add a reconnect capability when the mysql server goes away

0.8.7h
-bug#0001669: Problems with getting data from script using SPINE on Windows Server 2003 x32
-bug#0001829: Wrong string numerical value got from Spine SNMP poller
-bug#0001899: spine treats undef replies as 0
-bug#0001968: Spine Error with Cisco FWSM firewalls
-bug#0001974: PRIV_PROC_EXEC is required for Spine on Solaris 10
-bug#0002059: Spine doing too many (80+) connections when polling
-bug: Net-snmp API issues cause spine crashes with some SNMP agents
-bug: Host list not properly initialized
-bug: Mutex locking issues cause deadlocks in Windows
-bug: Escape windows type back slashes in scripts
-bug: Use safer Non Net-SNMP string parsing calls for snmpget and snmpgetnext
-bug: be smart for SNMP V3 and use AuthNoPriv when privacy passphrase is empty
-bug: Do not fail on insert for a duplicate record
-bug: Script server results with special characters can cause segfaults
-feature#0001852: Another 10% speedup in spine
-feature#0001878: Add Linux Capabilities to Spine
-feature: Add additional ping methods to allow more precise snmp pings
-feature: Clean up directory, update bootstrap

0.8.7g
-feature: Multi threaded host polling

0.8.7f
-bug#0001465: Don't check micro version when comparing installed net-snmp version to version used when building
-bug#0001497: Prevent constant reindexes if snmp agent continually returns uptime of 0
-bug#0001510: Speedup spine resorting hosts by estimated polling time
-bug#0001519: spine enhancement for parallel collection of data at host level
-bug#0001541: Spine snmp bulk get incorrect assumes that the server SNMP Agent returns variables in same order
-bug#0001551: Spine compile problem on AIX 5
-bug#0001563: Spine Compilation Problem on sql.c
-bug#0001604: HEX Counter values enclosed in quotes not recognized as HEX
-bug#0001657: Spine output shows drop of latest bit from hex value
-bug#0001653: Transient ICMP Socket create failures causing spine to die
-bug: When performing reindex checks, spine does not trim quotes from string values resulting in reindex faiures
-bug: Add new option to enable Net-SNMP library vs. header versions
-bug: ICMP fails on some platforms
-bug: MySQL client auto reconnect default in MySQL 5.0.71 causes spine to crash
-bug: Inconsistent behavior when the poller interval has not been set
-bug: Invalid use of FDSETSIZE can cause issue with Script Server
-bug: When performing reindex checks, spine does not trim quotes from string values resulting in reindex faiures
-feature#0001629: Implement the snmp clientaddr option to bind spine to a specific local ip address

0.8.7e
-bug: Not all configuration paths are searched for spine.conf
-bug: If host has MAX OID's set to 0, timeouts occur
-bug: Properly detect full Cygwin installs by finding sh.exe
-bug: Don't perform TCP Ping retries in Windows. You cannot set socket send timeouts in Windows

0.8.7d
-bug#0001310: Feature request for poller.php- single host polling
-bug#0001313: Spine takes an excessive amount of time timing out failed tcp pings
-bug#0001358: (cacti + spine) svn. Using snmp v3 constantly get "value: U", whereas snmpget returns correct value
-bug#0001379: Ping.c might send more then retry_count icmp packages
-bug#0001381: configure script distributed with cacti-spine-0.8.7c is broken
-bug#0001420: PCOMMAND: Poller[0] Host[80] WARNING: Recache Event Detected for Host
-bug: A host that for some reason can not initialize snmp can cause a segfault
-bug: When using nifty popen, when the script times out, attempt to kill it
-bug: Under some platforms tcp and udp ping unresponsive
-bug: Availability messaging incorrect for snmpv3 hosts
-bug: TCP Pings that receive a connection refused are good pings
-bug: Avoid segmentation faults when Reindex table issues are found
-bug: When performing snmp_get's, dont assume no error means non-null response
-bug: Some snmp agents don't getnext on '.1' and need another oid '.1.3'
-bug: Net-snmp versioning breaks snmpV3
-bug: Use system level snmp_retries variable instead of 3
-feature: Add one additional debug message to the poller code to track data sources polled
-feature: Add more config paths for packagers
-feature: Allow specification of an optional hostlist instead of first and last hostid's
-feature: Integrate more tightly with boost by allowing writing directly to the boost output table
-feature: Complete implementation poller_id field for people using a poller_id for polling.

0.8.7c
-bug#0001022: strip_quotes incorrectly parsing script output
-bug#0001097: Spine: Patch to allow unknown values including "Nan" and "U" without warnings
-bug#0001101: spine hangs and times out
-bug#0001130: ERROR: Spine Timed Out While Processing Hosts Internal
-bug#0001147: spine doesn't trim white space from data template OIDs
-bug#0001152: Running spine w/o setuid-root on Solaris
-bug#0001186: clarify INSTALL documentation.
-bug#0001231: Compiling Spine on Solaris 10
-bug#0001260: Deadlock in ping.c when resolving bad hostnames
-bug#0001271: hex string to decimal conversion
-bug#0001277: Spine reporting partial result or 'U' for SNMP value
-bug: Correct a buffer overrun issue in poller.c
-bug: If the script server goes away due to a syntax problem, it will not restart
-bug: If the snmp session is not created spine times out
-bug: If your snmp context changes between poller items, the context would not always change
-feature: Use threadsafe gethostbyname_r
-feature: Improve mysql logging
-feature: Allow overriding the default results buffer size
-feature: Allow overriding the default max mysql buffer (insert) size
-feature: Allow overriding the maximum simultaneous scripts setting

0.8.7a
-bug#0001054: Cactid/Spine installation instructions are missing dependencies
-bug#0001056: Spine/Cactid configure reports incorrect URL for bug reporting
-bug#0001071: When using Multiget OID's in Spine Errored OID's Cause Alignment Issues
-bug#0001072: When the Last OID of a group is 'U', the host is repored down and remainder of OID's not polled
-bug#0001097: Add patch to allow unknown values
-bug#0001101: Fix ICMP hang while in a timed out state

0.8.7
-bug: Fix configure issues with hybrid 64 bit OS'
-feature: Rename to spine
-feature: Update copyright
-feature: Add tab stops and autoindent to source code
-feature: Make spike detection more generic
-feature: Add snmpv3 support including contexts

0.8.6j
-bug#0000879/0000872: cactid doesn't always report error messages before dying
-bug#0000856: Slight documentation change
-bug#0000861: Downed Host Detection on non-SNMP devices wrong
-bug#0000886: SNMP Ping to Utilize The snmpgetnext instead of snmpget
-bug#0000889: Use configure script's sysconfdir variable for placement of cactid.conf
-bug#0000929: Spine with setuid root falls back to UDP after first host
-bug#0000939: cactid use custom hostname, snmp_community,snmp_username and snmp_password in datasource
-bug#0000940: Increasing BUFSIZE in cactid.h will still not allow longer output from scripts
-bug#0000951: Spine SNMP polling does not strip enum values
-bug#0000960: cactid truncating responses from scripts to 511 characters
-bug#0000987: cactid can't use a socket unix
-bug: By default, Cygwin can not handle large quantities of running scripts, therefore, limit to 20
-bug: Increase the number of file descriptors in Cygwin to 512, 64 does not work for large systems.
-bug: If the system is out of resources when trying to fork(), retry three more times
-bug: Use vfork instead of fork.  It's more efficient with resources.
-bug: Spine Script Server would not work with cgi version of php.  Now it does.
-bug: Changes in SNMP Community from poller item to poller item were not being considered.
-bug: Restore meaningful notices when running from command line
-feature: Allow users to use the traditional popen instead of nifty if required.
-feature: Properly support INNODB database engine in MySQL

0.8.6i
-bug: Only output as much as MySQL can handle in 1 insert
-bug: Faulty Script Server shutdown was causing race condition
-bug: Allow ICMP or UDP ping to work if host begins with either "TCP:" or "UDP:"
-bug: Change assert logging to HIGH to more closely match cmd.php
-bug: Allow Spine to make on 64bit x86 Platforms - thanks to Reuben Farrelly
-bug: Changing syntax from "insert into to replace into" for reindex inserts
-bug: Don't perform a reindex a check for a data query if you already have to reindex
-bug: Make sure to log FATAL to stderr
-bug: Do not re-index a host if the re-index value is a "No Such Instance" result.
-bug#0000682: Allow storing of each hosts polling start time
-bug#0000691: Spine fails with custom snmp port
-bug#0000699: Tick counts not being detected
-bug#0000706: Spine didn't start PHP scripts when host didn't answer SNMP (but icmp is ok)
-bug#0000710: cactid.conf doesn't allow for no mysql password
-bug#0000716: Don't attempt to save output for a host if there is none.
-bug#0000717: Allow numeric double results to start with '+', '-', '.'
-bug#0000724: cactid truncate script command when reindex
-bug#0000736: Solaris 8 : Alarm Clock message
-bug#0000745: cactid: search path for mysql and snmp does not include /usr/pkg
-bug#0000748: cactid doesn't handle special charectors
-bug#0000749: Spine 0.8.6g won't accept special characters from data template
-bug#0000750: poller doesn't check for snmp if udp ping fails
-bug#0000752: Problem with OID truncation with cactid
-bug: add kstat checking for Net-SNMP v5.3.x
-bug: get more intelegent.  move cactid.conf.dist to /etc during install
-feature: add Net-SNMP Library vs. Header check prior to execution
-feature: enabled signal handling in cactid

0.8.6h
-feature: Not released.  Syncing with Cacti distribution again.

0.8.6g
-bug#0000609: console "error" messages should go to stderr instead of stdout
-bug#0000618/0000613: correct invalid assignment of session.community in snmp.c
-bug#0000629: correct issues with invalid unknown reaults when reducing MAX OID get size
-bug: correct issue where spike prevention logic was not being activated properly
-bug: correct issue where host reindex was not operating for uptime goes backwards reindex method
-bug: if sysUptime is queried for a host, only do it once
-bug: certain SNMP string responses where not being handled properly due to net-snmp bug
-bug: increase the allowable size of the logfile entry
-bug: change behavior of availability so that if SNMP and ICMP/UDP are selected, only one has to succeed
-bug: cleaned up implementation of multi SNMP OID get error checking logic
-bug: don't attempt to allocate a zero item array when a host has no polling items
-bug: correct string values returning as blank in *nix environments
-bug: correct issue where invalid SNMP OID results would cascade to subseqent SNMP OID calls for a host
-optimization: change logging logic to cleanup code and add varadic formatting
-optimization: complete audit of code for portability complements of Steve @ http://www.unixwiz.net
-optimization: documentation, documentation, documentation...
-feature: added command line argument handling including database overrides complements of Steve @ http://www.unixwiz.net
-feature: added multiple script server process feature to current version
-feature: added support for MySQL 5.x
-feature: added more verbose MySQL DEBUG logic

0.8.6f-1
-bug: Two memory leak fixes in poller.c
-bug: Typo in the README-WINDOWS install file

0.8.6f
-bug: allow a host to have more than 1 SNMP port defined for those odd devices that have them
-bug: corrected an issue that caused infrequent segfaults when a host refused a ping request
-bug: increased max_threads from 30 to 100
-bug: delayed killing php script server process by .5 seconds to allow MySQL connections to close
-bug: place thread locks around unsafe functions to prevent possible segfaults
-feature: implemented snmpv3 AuthNoPriv to align with Cacti 0.8.6 user interface
-feature: improved performance of poller by the reduction of MySQL insert calls
-feature: improved poller performance by grouping snmp get requests in a single call

0.8.6e
-bug:#0000470: added -v, --version, -h, --help to command line options to make more GNU friendly
-bug:#0000425: added ability to specify a socket file in *nix environments
-bug: correct issues converting back slashes to forward slashes in arguments
-bug: stop cactid from segfaulting when the database contains orphaned data source records
-bug: re-implemented thread safe operations for non-linux systems
-bug: allow cactid to poll from non-standard snmp port
-bug: optimized some string handling routines
-bug: changed snmp availability check to sysUptime from sysDesc
-bug: limit the number of concurrent threads to 30
-bug: remove legacy cactid.conf file processing code
-bug: add fault detection logic to mysql query calls to prevent segfaults
-bug: cleaned up some unused variables
-bug: add ability to detect errors and gracefully shut down php script_server
-bug: remove trailing blanks and alpha characters from results
-bug: clean up some string handling on script server results
-bug: stop DEADLOCKS by not prematurely releasing mutex locks
-bug: changed licensing to LGPL to accomodate linked libraries such as OpenSSL
-bug: corrected issues where snprintf was taking 1 too many characters
-bug: remove unneccessary Windows MACRO's from net-snmp initialization
-feature: added seteuid functionality for unix and ICMP ping
-feature: restart the script server after a timeout to prevent unexpected results
-feature: only run the php script server if you have script server elements to process
-feature: disable MIB loading to speed the launch of the net-snmp api
-feature: change TREAD_SLEEP duration depending on number of processes to reduce CPU load
-feature: allow the user to specify a script and script server timeout value from the user interface
-feature: added polling for non-host specific data sources
-feature: added data source logging to provide easier problem resolution
-feature: added cmd.php like spike suppression
-feature: added support for experimental multiple poller interval handling

0.8.6d
-bug: increased timers for popen and script server to 20 seconds
-bug: corrected segfault when polling a device with a null community string
-bug: re-included ifdef for mysql thread protection for mysql 3.x

0.8.6c
-bug: fixed integer/float conversion problem.
-bug: increased the default script timeout from 5 to 10 seconds
-bug: changed stdout format to reduce clutter on screen
-bug: removed cygwin workaround that was causing SNMP instability
-bug: increased both BUFSIZE and LOGSIZE to allow for larger output corner cases
-bug: added mutex locking around MySQL calls and eliminated one unlock without a lock
-feature: added connection timeout and retry logic
-feature: added database port option in cactid.conf file.  New parameter is DB_Port
-feature: added some compiler directives for better compatibility with cygwin

0.8.6b
-bug: fixed issue that prevented multi ds item RRD?s from updating
-bug: fixed invalid string length calculation that was truncating output over 4 characters
-bug: small log file reformatting
