File Writing optimizations - FileOutputStream vs Writers
According to its javadoc:


  FileOutputStream is meant for writing streams of raw bytes such as image data. For writing streams of characters, consider using FileWriter.


See also: https://stackoverflow.com/questions/11371154/outputstreamwriter-vs-filewriter

You could also use a StringBuilder instead of doing manually a string concatenation.

Also, the whole method is sychronized. The message probably does not need to be constructed in the sychronized block. Only concrete write to the Stream/File should be sychronized:

long logtime = System.currentTimeMillis();
// construct string etc

sychronized(this){
    out.write(message.getBytes(StandardCharsets.UTF_8));
}


You could also try to read the code of "real" logging frameworks to get ideas how they work.