Huge thanks for this -- logging with wfDebug() and friends has always been a little primitive, and this is both more flexible and lets us remove some of our weird custom code. :)
-- brion On Thu, Jan 29, 2015 at 11:45 PM, Bryan Davis <[email protected]> wrote: > PSR-3 logging has been fully supported in MediaWiki since1.25wmf5. > We've been making various tuning improvements since then including a > recent deprecation of the initial MWLogger wrapper class in favor of > direct usage of Psr\Log\LoggerInterface by wfDebugLog() and other > internal wrapper methods [2]. > > The next big step in introducing structured logging to MediaWiki is to > begin to replace calls to wfDebugLog() (and dear god wfDebug()) with > direct usage of Psr\Log\LoggerInterface instances. Kunal and I have a > couple starter patches that show this in gerrit [3]. In both > conversions we have chosen to implement Psr\Log\LoggerAwareInterface > in the effected classes to allow setter based injection of a > LoggerInterface. The log channel names were also chosen to match the > previous wfDebugLog logGroup values. When you use a PSR-3 logger you > need to choose a severity for each log message. PSR-3 has quite a few > possible levels, but I'd like to propose that we really only need 4 to > start with in MediaWiki: > > * debug: Useful for ummm.... debugging. :) These are messages that are > useful for local development and are generally too "spammy" to output > on a production wiki. This would typically include anything currently > being logged via wfDebug. > * info: Valuable state change information. This level is a great place > to record information that would be useful in a production environment > when tracing the path of a request that eventually had an error. > * warning: A soft error condition such as a recoverable error or > another condition that typically should not be seen but isn't halting > for the operation in process > * error: A hard error such as a caught exception with no recovery path. > > The notice, critical, alert and emergency log levels seem unnecessary > to me, but I'm willing to hear arguments about where they are super > duper useful for some log event state that I haven't thought of yet. > > When thinking about Wikimedia cluster logging, events emitted at > warning and error levels should be things that you want deployers and > operations staff to see in the Logstash "fatalmonitor" view and > recorded to other durable logging stores. Events at info level may or > may not be captured similar to how we currently enable some but not > all wfDebugLog channels. Events at debug level will probably only be > captured in beta labs and similar low volume debugging environments. > > The wfDebug* methods are not being deprecated officially yet but it > would be great if people started treating them like they were > deprecated when writing new classes. It would be even more awesome if > more folks started making small cleanup patches to convert existing > classes to the new style of logging. Tagging gerrit reviews for these > patches with "PSR-3" as either a submitter or a reviewer would also be > appreciated. > > [0]: https://gerrit.wikimedia.org/r/#/c/119940/ > [1]: https://gerrit.wikimedia.org/r/#/c/185210/ > [2]: https://gerrit.wikimedia.org/r/#/c/184830/ > [3]: > https://gerrit.wikimedia.org/r/#/q/project:mediawiki/core+branch:master+topic:PSR-3,n,z > > Bryan > -- > Bryan Davis Wikimedia Foundation <[email protected]> > [[m:User:BDavis_(WMF)]] Sr Software Engineer Boise, ID USA > irc: bd808 v:415.839.6885 x6855 > > _______________________________________________ > Wikitech-l mailing list > [email protected] > https://lists.wikimedia.org/mailman/listinfo/wikitech-l _______________________________________________ Wikitech-l mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikitech-l
