Running Go on Google Appengine means I can use the appengine.Contextlogging functions to record important (or not-so important) information about the running of the site. But there are 5 different levels of logging, so which should I use for what? In order to be consistent I have come up with these rules for deciding which level to use:

Debug

Trivial information that should only be useful when actually debugging. Traces function calls and follows utterly routine code paths.

c.Debugf("HTML for %s was in memcache", path)

Info

Normal operation of the site, roughly one message per successful page served.
Since the usual expiry time is something like one minute, I expect most pages to be cached. So recreating a page is a somewhat rarer event, although still completely expected.

c.Infof("HTML for %s was not in memcache", path)

Warning

Something suspicious or unwanted. For instance a malicious user trying unusual inputs or me (as an admin) trying to do something stupid (like give two articles the same URL). Also used if part of Google's service fails. Ordinary users should not be able to trigger warning-level messages via normal use of a browser, unless there is a capabilities issue.