Sometimes you need to make sure that there will exist only one instance of a class. In that case, you might consider making it a singleton. Just making a static variable somewhere and not making the class a singleton is not sufficient in that case - in principle, you could then still create multiple instances of the class, which will lead to trouble. (Note that a singleton usually uses a private static variable to store a reference to the single instance).
You might want to make a class a singleton if it represents some resource of which there exists only one. An example is the logger you are talking about, where there indeed one log file, so you'd want to have a single object that handles all the logging to that file.
Note that there is also some criticism on singletons - some people even call it an "anti-pattern". Singletons can make code difficult to
test.