質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

0回答

988閲覧

MavenでLog4jを利用しようとするとTomcatが起動できない

Linkey

総合スコア77

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2022/01/17 14:36

編集2022/01/17 14:37

javaを勉強しているものです。EclipseでMavenプロジェクトを作成しサーブレットクラスを実装しました。
そのサーブレットのクラスでログ出力処理を実装して動作確認をしようとしたところTomcatの起動に失敗してしまいます。
イメージ説明

Tomcatのログは以下のような出力で、エラー原因が特定できませんでした。

情報: CATALINA_BASE: C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 [月 1月 17 23:17:28 JST 2022] 情報: CATALINA_HOME: C:\Program Files\tomcat8 [月 1月 17 23:17:28 JST 2022] (中略) 情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: XXX 情報: Initializing ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:28 JST 2022] 情報: Using a shared selector for servlet write/read [月 1月 17 23:17:29 JST 2022] 情報: Initializing ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 重大: Failed to initialize end point associated with ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 重大: Failed to initialize connector [Connector[AJP/1.3-8009]] [月 1月 17 23:17:29 JST 2022] 情報: Initialization processed in 551 ms [月 1月 17 23:17:29 JST 2022] 情報: サービス Catalina を起動します [月 1月 17 23:17:29 JST 2022] 情報: Starting Servlet Engine: Apache Tomcat/8.0.36 [月 1月 17 23:17:29 JST 2022] 情報: Unknown loader jdk.internal.loader.ClassLoaders$AppClassLoader@6d06d69c class jdk.internal.loader.ClassLoaders$AppClassLoader [月 1月 17 23:17:29 JST 2022] 情報: Unknown loader jdk.internal.loader.ClassLoaders$AppClassLoader@6d06d69c class jdk.internal.loader.ClassLoaders$AppClassLoader [月 1月 17 23:17:29 JST 2022] 重大: A child container failed during start [月 1月 17 23:17:29 JST 2022] 重大: A child container failed during start [月 1月 17 23:17:29 JST 2022] 重大: The required Server component failed to start so Tomcat is unable to start. [月 1月 17 23:17:29 JST 2022] 情報: Pausing ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:29 JST 2022] 情報: Pausing ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 情報: サービス Catalina を停止します [月 1月 17 23:17:29 JST 2022] 情報: Destroying ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:29 JST 2022] 重大: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"] [月 1月 17 23:17:29 JST 2022] 情報: Stopping ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] 情報: Destroying ProtocolHandler ["ajp-nio-8009"] [月 1月 17 23:17:29 JST 2022] WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Program%20Files/tomcat8/lib/catalina.jar) to field java.lang.Thread.threadLocals WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release

プロジェクトの状態は以下の通りです。
サーブレットクラス
/sample/src/main/java/com/servlet/Path1Servlet.java

java

1package com.servlet; 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10import org.slf4j.Logger; 11import org.slf4j.LoggerFactory; 12 13/** 14 * Servlet implementation class Path1Servlet 15 */ 16public class Path1Servlet extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 private static final Logger logger = LoggerFactory.getLogger(Path1Servlet.class); 20 21 /** 22 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 23 */ 24 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 25 logger.info("Start"); 26 response.getWriter().append("Served at: ").append(request.getContextPath()); 27 } 28} 29

/sample/src/main/resources/log4j2.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE project> 3<Configuration> 4 5 <Properties> 6 <Property name="format1">%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-6p %c{10} %m%n</Property> 7 <Property name="logfile">/hoge/log/app.log</Property> 8 <Property name="logfile-archive">/hoge/log/testlog_%d{yyyy-MM-dd}-%i.log</Property> 9 </Properties> 10 11 <Appenders> 12 <!-- コンソールに出力する設定 --> 13 <Console name="STDOUT" target="SYSTEM_OUT"> 14 <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 15 </Console> 16 <!-- ファイルに出力する設定 --> 17 <RollingFile name="logfile001" append="true" fileName="${logfile}" 18 filePattern="${logfile-archive}"> 19 <PatternLayout> 20 <pattern>${format1}</pattern> 21 </PatternLayout> 22 <Policies> 23 <!-- 1kBに達したらローテーションのファイルを作成する --> 24 <SizeBasedTriggeringPolicy size="1KB"/> 25 </Policies> 26 <DefaultRolloverStrategy max="3"/> 27 </RollingFile> 28 </Appenders> 29 <Loggers> 30 <Root level="info"> 31 <AppenderRef ref="STDOUT" /> 32 <AppenderRef ref="logfile001" /> 33 </Root> 34 </Loggers> 35</Configuration>

web.xml
/sample/src/main/webapp/WEB-INF/web.xml

xml

1<!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 5<web-app> 6 <display-name>Archetype Created Web Application</display-name> 7 8 <servlet> 9 <servlet-name>Path1Servlet</servlet-name> 10 <display-name>Path1Servlet</display-name> 11 <description></description> 12 <servlet-class>com.servlet.Path1Servlet</servlet-class> 13 </servlet> 14 <servlet-mapping> 15 <servlet-name>Path1Servlet</servlet-name> 16 <url-pattern>/api/users/path1</url-pattern> 17 </servlet-mapping> 18</web-app> 19

/com/pom.xml

xml

1<?xml version="1.0" encoding="UTF-8"?> 2 3<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>sample3</groupId> 8 <artifactId>com</artifactId> 9 <version>0.0.1-SNAPSHOT</version> 10 <packaging>jar</packaging> 11 12 <name>com Maven Webapp</name> 13 <url>http://www.example.com</url> 14 15 <properties> 16 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 17 <maven.compiler.source>15</maven.compiler.source> 18 <maven.compiler.target>15</maven.compiler.target> 19 </properties> 20 21 <dependencies> 22 <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --> 23 <dependency> 24 <groupId>ch.qos.logback</groupId> 25 <artifactId>logback-classic</artifactId> 26 <version>1.2.10</version> 27 <scope>test</scope> 28 </dependency> 29 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple --> 30 <dependency> 31 <groupId>org.slf4j</groupId> 32 <artifactId>slf4j-simple</artifactId> 33 <version>1.7.33</version> 34 <scope>test</scope> 35 </dependency> 36 <dependency> 37 <groupId>org.slf4j</groupId> 38 <artifactId>slf4j-api</artifactId> 39 <version>1.7.33</version> 40 </dependency> 41 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/4.0.1 --> 42 <dependency> 43 <groupId>javax.servlet</groupId> 44 <artifactId>javax.servlet-api</artifactId> 45 <version>4.0.1</version> 46 <scope>provided</scope> 47 </dependency> 48 <dependency> 49 <groupId>junit</groupId> 50 <artifactId>junit</artifactId> 51 <version>4.11</version> 52 <scope>test</scope> 53 </dependency> 54 </dependencies> 55 56 <build> 57 <finalName>sample</finalName> 58 <pluginManagement> 59 <plugins> 60 <plugin> 61 <artifactId>maven-clean-plugin</artifactId> 62 <version>3.1.0</version> 63 </plugin> 64 <plugin> 65 <artifactId>maven-resources-plugin</artifactId> 66 <version>3.0.2</version> 67 </plugin> 68 <plugin> 69 <artifactId>maven-compiler-plugin</artifactId> 70 <version>3.8.0</version> 71 </plugin> 72 <plugin> 73 <artifactId>maven-surefire-plugin</artifactId> 74 <version>2.22.1</version> 75 </plugin> 76 <plugin> 77 <artifactId>maven-war-plugin</artifactId> 78 <version>3.2.2</version> 79 </plugin> 80 <plugin> 81 <artifactId>maven-install-plugin</artifactId> 82 <version>2.5.2</version> 83 </plugin> 84 <plugin> 85 <artifactId>maven-deploy-plugin</artifactId> 86 <version>2.8.2</version> 87 </plugin> 88 </plugins> 89 </pluginManagement> 90 </build> 91</project>

TomcatV8.0のサーバー追加した後に/com/src/main/webapp/index.jspを右クリック→実行→サーバーで実行と選択するとエラーになります。
Path1Servlet.javaの以下をコメントアウトすると起動が成功しindex.jspにアクセスができます。

java

1private static final Logger logger = LoggerFactory.getLogger(Path1Servlet.class); 2 3logger.info("Start");

Tomcatサーバーで実行するときに引数は以下のような設定となっています。

-Dcatalina.base="C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1" -Dcatalina.home="C:\Program Files\tomcat8" -Dwtp.deploy="C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps"

Tomcat8のserver.xmlやweb.xmlは手を入れておらずデフォルトのままです。
Tomcat8でLog4jを利用するには何かほかに設定が必要なのでしょうか?
tomcatとlog4jの競合、起動できない等のキーワードで解決方法を探していますが、未だに見つかりません。
Tomcatに詳しい方、MavenプロジェクトでWebアプリケーションを作成されたことのある方がいましたら
ご回答いただけないでしょうか?よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問