Skip to content

Commit

Permalink
Added cmd line options to enable access logs
Browse files Browse the repository at this point in the history
  • Loading branch information
jkutner committed Aug 2, 2018
1 parent ae8a8f5 commit e17d59c
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README.md
Expand Up @@ -166,6 +166,12 @@ $ java -jar webapp-runner.jar --help
The specified path "src/main/webapp" does not exist.
Usage: <main class> [options]
Options:
--access-log
Enables AccessLogValue to STDOUT
Default: false
--access-log-pattern
If --access-log is enabled, sets the logging pattern
Default: common
--basic-auth-pw
Password to be used with basic auth. Defaults to BASIC_AUTH_PW env
variable.
Expand Down
Expand Up @@ -119,4 +119,10 @@ public class CommandLineParams {
@Parameter(names = "--enable-naming", description = "Enables JNDI naming")
public boolean enableNaming = false;

@Parameter(names = "--access-log", description = "Enables AccessLogValue to STDOUT")
public boolean accessLog = false;

@Parameter(names = "--access-log-pattern", description = "If --access-log is enabled, sets the logging pattern")
public String accessLogPattern = "common";

}
15 changes: 15 additions & 0 deletions main/src/main/java/webapp/runner/launch/Main.java
Expand Up @@ -34,23 +34,30 @@
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.users.MemoryUserDatabase;
import org.apache.catalina.users.MemoryUserDatabaseFactory;
import org.apache.catalina.valves.AccessLogValve;
import org.apache.coyote.AbstractProtocol;
import org.apache.coyote.ProtocolHandler;
import org.apache.tomcat.util.descriptor.web.LoginConfig;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.apache.tomcat.util.scan.StandardJarScanner;
import webapp.runner.launch.valves.StdoutAccessLogValve;

import javax.naming.CompositeName;
import javax.naming.StringRefAddr;
import javax.servlet.annotation.ServletSecurity.TransportGuarantee;
import java.io.CharArrayWriter;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
import java.util.logging.StreamHandler;

/**
* This is the main entry point to webapp-runner. Helpers are called to parse the arguments. Tomcat configuration and
Expand Down Expand Up @@ -270,6 +277,14 @@ public void lifecycleEvent(LifecycleEvent event) {
enableBasicAuth(ctx, commandLineParams.enableSSL);
}

if (commandLineParams.accessLog) {
Host host = tomcat.getHost();
StdoutAccessLogValve valve = new StdoutAccessLogValve();
valve.setEnabled(true);
valve.setPattern(commandLineParams.accessLogPattern);
host.getPipeline().addValve(valve);
}

//start the server
tomcat.start();

Expand Down
@@ -0,0 +1,14 @@
package webapp.runner.launch.valves;

import org.apache.catalina.valves.AbstractAccessLogValve;

import java.io.CharArrayWriter;

public class StdoutAccessLogValve extends AbstractAccessLogValve {
@Override
public void log(CharArrayWriter message) {
synchronized (this) {
System.out.println(message.toCharArray());
}
}
}

0 comments on commit e17d59c

Please sign in to comment.