log4j не работает на сервере tomcat8 с файлом log4j.properties
Я пытаюсь конвертировать некоторые PDF-файлы в PNG с помощью Ghost4j. Для работы этой библиотеки нужен log4j, поэтому я добавил в свои библиотеки также log4j.
Поскольку мое приложение представляет собой динамический веб-проект, я добавил библиотеки в папку WEB-INF/lib.
Когда я пытался запустить приложение на моем локальном сервере tomcat8, оно регистрировало некоторые предупреждения, такие как:
log4j:WARN No appenders could be found for logger (org.ghost4j.Ghostscript).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Итак, просматривая веб-страницы, я обнаружил, что в моем приложении отсутствует файл log4j.properties. Таким образом, я создал и добавил файл log4j.properties в WEB-INF/classes (как предлагалось на некоторых других постах stackru). Таким образом, с этим исправлением приложение на моем сервере локатора tomcat8 работало без сбоев.
Хотя, когда я пытался развернуть его на удаленном сервере tomcat8, приложение не работает. Проблема в том, что он не создает никаких исключений, он просто прерывает его работу. С файлом log4j.properties или без него на удаленном сервере tomcat8 не было никакой разницы: он просто перестал работать с той же "строкой кода", в которой ранее на моем локальном сервере регистрировались те предупреждения, которые я писал ранее.
Любая помощь приветствуется.
PS: код для преобразования довольно прост. Я отправляю это, чтобы закончить мой вопрос:
private void createImages(String machine, String fileName){
LOGGER.warning("started creating images");
try{
PDFDocument document = new PDFDocument();
document.load(new File(DOCS_DIR + machine + "/" + fileName + ".pdf"));
String commonPath = IMGS_DIR + machine + "/" + fileName + "/";
Path path = Paths.get(new File(commonPath).getPath());
if(Files.notExists(path, LinkOption.NOFOLLOW_LINKS)){
new File(commonPath).mkdirs();
}
SimpleRenderer renderer = new SimpleRenderer();
renderer.setResolution(300);
renderer.setAntialiasing(SimpleRenderer.OPTION_ANTIALIASING_HIGH);
LOGGER.warning("IT STOPS HERE!!");
List<Image> images = renderer.render(document); // this is the line in which the execution of the program stops..
LOGGER.warning("pdf pages are: " + images.size());
for (int i = 0; i < images.size(); i++) {
Image img = images.get(i);
Image scaledImg = img.getScaledInstance(1200, -1, Image.SCALE_SMOOTH);
BufferedImage newImage = new BufferedImage(scaledImg.getWidth(null), scaledImg.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = newImage.createGraphics();
g.drawImage(scaledImg, 0, 0, null);
g.dispose();
String extension = ".png";
String imgName = commonPath + (i + 1) + extension;
LOGGER.warning("creating img n: " + (i+1) + " - creating img in folder: " + imgName);
ImageIO.write((RenderedImage) newImage, "png", new File(imgName));
}
LOGGER.warning("finished creating images!");
} catch(FileNotFoundException e){
LOGGER.warning("ERROR DOCUMENT SERVICE -- FileNotFoundException");
LOGGER.warning(e.printStackTrace());
} catch (IOException e) {
LOGGER.warning("ERROR DOCUMENT SERVICE -- IOException");
LOGGER.warning(e.printStackTrace());
} catch (RendererException e) {
LOGGER.warning("ERROR DOCUMENT SERVICE -- RendererException");
LOGGER.warning(e.printStackTrace());
} catch (DocumentException e) {
LOGGER.warning("ERROR DOCUMENT SERVICE -- DocumentException");
LOGGER.warning(e.printStackTrace());
} catch (Exception e){
LOGGER.warning("ERROR DOCUMENT SERVICE -- Exception");
LOGGER.warning(e.printStackTrace());
}
}
1 ответ
В конце концов я нашел решение сам.
Проблема никак не связана с log4j, но она не работает, потому что на сервере отсутствует Ghostscript.
После установки Ghostscript на сервере все работало нормально.