You could write an abstract class containing a logging method. The abstract implementation throws an error. During unit testing, simply check whether the method throws an error and fail the test if it does.
However, this is quite prone to error as your programmer could simply have made a dummy implementation. As of now, it is hard to assess the quality of log messages automatically. For example, consider the two logging messages below:
1) En error occurred while executing methods XY, parameter Z null.
2) Error in crabs take over method XY and annihilate Z with a laser.
If you were to only check for key terms, both would fit the test. So an oracle is hard to come by. The method above ensures that your programmer does some work but it is up to him to add a quality log. You can certainly add other parameters for quality such as length or relevance but all are meaningless if they don't refer to the problem. The same dilemma has plagued the industry with proper error handling for quite some while.
I believe the only concrete and effective tool is code review and employee evaluations.