Design a logger library with log levels
PremiumMachine codingEasy
- Log levels
- Log sinks
- Strategy pattern
Quick answer
This machine coding interview question asks you to design a logger library with log levels. Aim for a design that meets its requirements at the stated scale, then explain its main components, data flow and trade-offs. Interviewers want to see how you scope the problem, size it and defend each choice.
The problem
Build a logger library with log levels, like the logging packages every backend service imports. Code calls logger.info(...) or logger.error(...); the library drops messages below the set level, formats the rest and writes them to one or more sinks. The hard part is staying fast and easy to extend.
A sink is a destination such as the console, a file or an in-memory list used in tests. Loggers are named with dots, such as app.db, and a child uses its parent's level unless it has its own.
What must a logger library with log levels do?
- Log levels: Five ordered levels, DEBUG < INFO < WARN < ERROR < FATAL. A logger set to WARN drops DEBUG and INFO.
- Logging calls: debug(msg), info(msg), warn(msg), error(msg, err?) and fatal(msg) on a logger from LogManager.getLogger(name).
How well must it do it?
- Cheap when filtered: A dropped DEBUG call must cost almost nothing: no formatting and no sink call.
- Callers not blocked: An optional async mode puts records in a bounded queue drained by one worker, so a slow sink does not slow the caller.
What scale should you design for?
Use these numbers in your estimates.
The scale numbers unlock with this questionUnlock
Key concepts
- Log levels
- Log sinks
- Strategy pattern
- Hierarchical loggers
- Async logging
- Formatters
How you’ll practise
- Requirements
- Entities and interfaces
- Core implementation
- Edge cases and tests
- Extensions
- Wrap-up
Lala, personalized to you, gives a hint when you ask and reviews your design when you are ready.
What do interviewers look for?
In any machine coding design round.
- Clarifies the requirements before drawing anything
- Uses a few numbers that actually change the design
- Draws a clear path from the client to storage
- Picks storage and caching with reasons, not by habit
- Explains what breaks first under load and how to fix it
- States trade-offs openly instead of claiming a perfect design
Questions people ask about this interview question
- Which design type is this question?
- It is a machine coding question. You design a logger library with log levels and explain your choices the way you would in an interview.
- Is this question asked at entry level?
- It is marked Easy, so it suits engineers who are new to machine coding interviews. It is also a good warm-up before harder questions.
- What should I cover first?
- Start with the requirements: what the system must do, how well it must do it and which numbers change the design. Agree on scope with the interviewer before you design anything.
- Can I practise it for free?
- It is a premium question. Sign up and unlock it once for 10 credits; it then stays unlocked. When you finish, Lala, your personalized AI mentor, can review your design for 30 credits.
Related questions
Updated · Written by the SevyDevy team