private synchronized void writeFile(String s, Throwable t) {
   try {
     if (checkSize++ >= CHECK_SIZE_EACH_WRITES) {
       checkSize = 0;
       closeWriter();
       if (maxFileSize > 0 && FileUtils.size(fileName) > maxFileSize) {
         String old = fileName + ".old";
         FileUtils.delete(old);
         FileUtils.move(fileName, old);
       }
     }
     if (!openWriter()) {
       return;
     }
     printWriter.println(s);
     if (t != null) {
       if (levelFile == ERROR && t instanceof JdbcSQLException) {
         JdbcSQLException se = (JdbcSQLException) t;
         int code = se.getErrorCode();
         if (ErrorCode.isCommon(code)) {
           printWriter.println(t.toString());
         } else {
           t.printStackTrace(printWriter);
         }
       } else {
         t.printStackTrace(printWriter);
       }
     }
     printWriter.flush();
     if (closed) {
       closeWriter();
     }
   } catch (Exception e) {
     logWritingError(e);
   }
 }