In the early days of developing our HCS we realised we need extensive activity logging, to understand what was happening in in our smart home and to gain maximum insight and learning. Because it uses technology abstraction, these logs are both machine readable and easily understood by humans. It is really easy to see what has happened and when, with no confusing error codes! The logs provide a clear timeline of ALL the significant events.
In addition we also log information to screen on our Home Control System. This is an extra layer of information and insight that we don't want to keep long term. It is incredibly useful when testing and debugging and this approach is used because it places much less load on the processor and associated storage. It also allows us to clearly see the sequence and timing of events as we can configure the 'timestamp' resolution down to 1/1000th of a second.
We can view and read the logs but we also expose them via our diagnostics interface, to allow graphical views of data and data visualisation.
We wrote a Java class for all logging, to enable it to be implemented in a very flexible manner. Our implementation employs a queue, to buffer log entries before writing them to disk. It has a very small footprint and very good performance. It has also been designed to enable it to be configured to use a local USB pendrive, to maximise reliability and lifetime of SD cards and solid-state disks (SSD). This also makes it very easy to backup.
When developing, installing and running a smart home, these kind of logs are an invaluable tool in understanding how it is working and how it can be improved.