Decades ago, when we were all computing on mainframes, the application stack
was pretty simple. Programs were all running in core memory on the same
machine as the operating system and the data store. There was typically one
transactional log for activity and one for errors - not too many places to
look for evidence of what had gone wrong and why.
Then the application stack started to grow up. Client software communicated
over a network to a server running a more featured operating system and an
RDBMS (relational database management system). The biggest challenge for
developers was debugging those fat clients - typically by looking at
something like Windows event viewer logs. System administrators were
generally busy responding to alerts from SNMP traps and rummaging thr... (more)