Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
State of the art logging

Milan Vukoje
vukoje@gmail.com
www.vukoje.net

October 23rd 2013
Intro
• Webcom
www.webcominc.com
•
•
• We are hiring!
Topics
•
•
•
•
•
•
•

What is tracing?
How to build it?
Logger as profiler
Logger design
Log analysis
Demo 1 – WEBCOM trac...
What is tracing?
•
•
•
•

How to know what is production system doing?
Why not remote debugging?
Why not profiler?
What mo...
So how to build it?
•
•
•
•

Custom solution?
System.Diagnostics.Trace?
IntelliTrace?
Log4Net?
• no support for CSV
• no s...
Where to store logs?
• File system
• Accessibility
• Cleanup
• Replication
• Affecting speed
• Event log
• Database
• Clou...
Logger as profiler
•
•
•
•
•

When off – no impact
When on – trivial impact
Delay messages formatting!
Avoid DateTime.Now;...
“using” vs. start/end logs

•
•
•
•

better for functions with multiple exit points
works good with exception control flow...
Logger design issues
•
•
•
•
•
•
•
•

Hide behind facade
Logger must not break
Should not be transactional
GUI for runtime...
Log levels
• Levels are not informative enough
• We need more meaningful API
• Trace (Low/High)
• debug and performance in...
Log entity data
•
•
•
•
•

Message/title + description
Log level
Timestamp
Exception call stack
Logger name - extracted fr...
Log context data
• Event context
• App/Tenant/User/HttpRequest…
• Trace buffer
• Session buffer
• Trace call back and tag
AOP vs. manual logging
AOP vs. manual logging
• AOP
• easy
• too much logs
• no explanations, just method names
• Manual
• boring
• repetitive
• ...
How to scope logs?
•
•
•
•
•
•
•

No scoping
Per app
Per server
Per tenant
Per user
Per user action
Configurable
Log analysis?
•
•
•
•
•

Log as data
Notepad(++)
Excel (csv)
LogParser studio
Integrated app tool
Demo 1 – WEBCOM trace
analysis GUI
Demo 2 – AOP logging in MVC
web app using NLog and
Glimpse
Thank you for your attention!

Any Questions?
www.vukoje.net
vukoje@gmail.com
Upcoming SlideShare
Loading in …5
×

State of the art logging

702 views

Published on

How to build state of the art production system instrumenting so you can easily understand what is going on in your production system?
Which component to use? Log4Net, NLog, System.Trace, custom solution…
Event vs Trace (Monitoring vs Performance)
Tracing steps with “using” notation.
AOP vs manual logging
Where to output data?
How to scope data?
How not to kill app performance?
How to bake in app profiler in your tracing lib?
Demo of Webcom powerful GUI for trace analytics system.
Demo of AOP logging in MVC web app using NLog.

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

State of the art logging

  1. 1. State of the art logging Milan Vukoje vukoje@gmail.com www.vukoje.net October 23rd 2013
  2. 2. Intro • Webcom www.webcominc.com • • • We are hiring!
  3. 3. Topics • • • • • • • What is tracing? How to build it? Logger as profiler Logger design Log analysis Demo 1 – WEBCOM trace analysis GUI Demo 2 – AOP logging in MVC with NLog and Glimpse
  4. 4. What is tracing? • • • • How to know what is production system doing? Why not remote debugging? Why not profiler? What more? • Debugging • Profiling • Notifications • logs as data
  5. 5. So how to build it? • • • • Custom solution? System.Diagnostics.Trace? IntelliTrace? Log4Net? • no support for CSV • no support for dynamic file naming • java port with a bit awkward code • last release in 2006 • Nlog? • • • • simple good code Plenty of features side project by MS employee
  6. 6. Where to store logs? • File system • Accessibility • Cleanup • Replication • Affecting speed • Event log • Database • Cloud • App memory • web farms? • session dependency • Out of memory
  7. 7. Logger as profiler • • • • • When off – no impact When on – trivial impact Delay messages formatting! Avoid DateTime.Now; Use StopWatch.GetTimeStamp();
  8. 8. “using” vs. start/end logs • • • • better for functions with multiple exit points works good with exception control flow less repeated work better support for automatization
  9. 9. Logger design issues • • • • • • • • Hide behind facade Logger must not break Should not be transactional GUI for runtime configuration Redundant logs Editable logs Logs size and cleanup Avoid conditional tracing
  10. 10. Log levels • Levels are not informative enough • We need more meaningful API • Trace (Low/High) • debug and performance info • Events (Info/Warn/Error/Fatal) • durable info with different types • suitable for monitoring • much less than trace
  11. 11. Log entity data • • • • • Message/title + description Log level Timestamp Exception call stack Logger name - extracted from class name • Additional data • labels (categories) • ticks
  12. 12. Log context data • Event context • App/Tenant/User/HttpRequest… • Trace buffer • Session buffer • Trace call back and tag
  13. 13. AOP vs. manual logging
  14. 14. AOP vs. manual logging • AOP • easy • too much logs • no explanations, just method names • Manual • boring • repetitive • better control • better meaning • Combine them! • Explain through logs
  15. 15. How to scope logs? • • • • • • • No scoping Per app Per server Per tenant Per user Per user action Configurable
  16. 16. Log analysis? • • • • • Log as data Notepad(++) Excel (csv) LogParser studio Integrated app tool
  17. 17. Demo 1 – WEBCOM trace analysis GUI
  18. 18. Demo 2 – AOP logging in MVC web app using NLog and Glimpse
  19. 19. Thank you for your attention! Any Questions? www.vukoje.net vukoje@gmail.com

×