I just had a little fight with my boss over this topic (well, the boss always wi
ID: 644457 • Letter: I
Question
I just had a little fight with my boss over this topic (well, the boss always wins so I will do what he wants to be done) but I'd like to have the opinion of others about this:
We are making a complex application that will be used by expert users (like the one who manages the company backups).
I made an Advanced log, which contains 3 types of log:
messages
alerts
errors
Every error is translated and handled by the GUI, so the user will always know why something went wrong. My concern is about the messages:
The main goal of those messages is to have a detailed idea of what is happening and help the expert user to solve problems by himself without calling for assistance.
To do this I log a message (that will remain in RAM only, with a max message count) for every little kind of stuff, like
Connecting to server
Connection successfully
Request file list from path XXX
Starting receiving file list
File list successfully received
This can help to know when a problem occurred and to determine who is guilty for it.
The main problem is: Our program is translated in more than 10 languages! Translating that HUGE amount of little messages will be expensive and it will be used only by some users. You can access to this messages list using an Advanced console panel, so it's clear it's for Advanced users.
My boss wants those messages to be translated, but he doesn't want to spend a lot in translation, so he asked me to limit myself in using those messages.
If I limit myself this message log can become useless, but if we don't translate it our program loses its "friendly, translated approach".
What is the best thing to do? Pay more and translate everything? Limit message usage? Try to convince my boss that Advanced Users SHOULD know English?
Explanation / Answer
What you need to do is to configure logging to serve both your needs and those of your boss. Thing is, you aren't really forced to do what your boss asks ("Limit message usage") in the code and completely deprive yourself of an option to do logging the way you want.
Any half-decent logging framework allows programmer to output log messages into different locations (if your current framework can't, you have much much bigger problems than translation).
Configure your logging so that what is supposed to be desirable by your boss outputs into one location (file) and what you consider necessary, goes to another.
After that, show example of supposedly "boss-compliant" output to them and verify if this fits their needs.
Also, point them to example of "internally necessary" output and explain that it can be turned completely off by config change (your logging framework should allow that, and if it doesn't, see above) and explain that turning it off would make it much harder and expensive to investigate issues that may occur during application use.
Logging configuration is the way to keep your options open: no matter what is decided initially, changing it later would involve only logging config, leaving the application untouched.