From b593a097d2ada3ebda4a2440c256f8dae533cb7e Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Fri, 26 Sep 2014 16:13:51 +0000
Subject: [PATCH] #2021 feature - Added packaging to Maven building and command line commands [start|stop]
---
securis/etc/build/files/securis-server.bat | 4
securis/etc/build/pro/mvn_descriptor.xml | 39 +++
securis/etc/build/files/securis-server.sh | 4
/dev/null | 143 --------------
securis/etc/build/files/config/log4j2.xml | 42 ++++
securis/src/main/java/net/curisit/securis/SeCurisServer.java | 234 +++++++++++++++++++++++
securis/pom.xml | 20 +
securis/src/main/resources/log4j2.xml | 31 ++
securis/etc/build/files/README | 10 +
securis/etc/build/files/config/securis-server.properties | 14 +
10 files changed, 388 insertions(+), 153 deletions(-)
diff --git a/securis/etc/build/files/README b/securis/etc/build/files/README
new file mode 100644
index 0000000..3b2ce52
--- /dev/null
+++ b/securis/etc/build/files/README
@@ -0,0 +1,10 @@
+SeCuris server
+==============
+
+Updated doc: https://redmine.curistec.com/projects/securis/wiki/HowToSeCurisClient
+
+Creation of a request file
+For a manual activation, a request file should be sent to SeCuris administrator, to create a request file we can execute:
+
+ $ ./securis-server.sh start
+
diff --git a/securis/etc/build/files/config/log4j2.xml b/securis/etc/build/files/config/log4j2.xml
new file mode 100644
index 0000000..3ad030d
--- /dev/null
+++ b/securis/etc/build/files/config/log4j2.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+ <Appenders>
+
+ <RollingFileAppender name="defaultFile" fileName="${sys:user.home}/.SeCuris/logs/securis-server.log" append="true"
+ filePattern="${sys:user.home}/.SeCuris/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
+ <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+ <Policies>
+ <TimeBasedTriggeringPolicy interval="1" modulate="true" />
+ </Policies>
+ <DefaultRolloverStrategy max="10"/>
+ </RollingFileAppender>
+ <Async name="defaultFileAsync" includeLocation="true">
+ <AppenderRef ref="defaultFile"/>
+ </Async>
+
+ <Console name="stdout" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+ </Console>
+
+ <Console name="console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%m%n"/>
+ </Console>
+
+ </Appenders>
+ <Loggers>
+
+ <Logger name="net.curisit" level="INFO" additivity="false">
+ <AppenderRef ref="defaultFileAsync"/>
+ <AppenderRef ref="stdout"/>
+ </Logger>
+
+ <Logger name="console" level="INFO" additivity="false">
+ <AppenderRef ref="console"/>
+ </Logger>
+
+ <Root level="INFO" >
+ <AppenderRef ref="stdout"/>
+ </Root>
+
+ </Loggers>
+</Configuration>
diff --git a/securis/etc/build/files/config/securis-server.properties b/securis/etc/build/files/config/securis-server.properties
new file mode 100644
index 0000000..80f083f
--- /dev/null
+++ b/securis/etc/build/files/config/securis-server.properties
@@ -0,0 +1,14 @@
+#########################################################################
+# #
+# Modify the current file using the proper values for you environment #
+# #
+#########################################################################
+
+license.server.hostname = 0.0.0.0
+license.server.port = 9080
+license.server.ssl.port = 9443
+
+ssl.keystore.path = /Users/rob/.ssh/keys/securis.pkcs12
+ssl.keystore.type = PKCS12
+ssl.keystore.password = curist3c
+ssl.keystore.alias =
diff --git a/securis/etc/build/files/securis-server.bat b/securis/etc/build/files/securis-server.bat
new file mode 100644
index 0000000..2e8d8e2
--- /dev/null
+++ b/securis/etc/build/files/securis-server.bat
@@ -0,0 +1,4 @@
+@echo off
+
+set CLASSPATH="config;libs\*"
+java -client -cp "%CLASSPATH%" net.curisit.securis.License %*
diff --git a/securis/etc/build/files/securis-server.sh b/securis/etc/build/files/securis-server.sh
new file mode 100644
index 0000000..92250ef
--- /dev/null
+++ b/securis/etc/build/files/securis-server.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+export CLASSPATH="config:libs/*"
+java -cp "$CLASSPATH" net.curisit.securis.SeCurisServer $@
diff --git a/securis/etc/build/pro/mvn_descriptor.xml b/securis/etc/build/pro/mvn_descriptor.xml
new file mode 100644
index 0000000..20e39ab
--- /dev/null
+++ b/securis/etc/build/pro/mvn_descriptor.xml
@@ -0,0 +1,39 @@
+ <assembly
+xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
+ <id>packager</id>
+ <formats>
+ <format>zip</format>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>${basedir}/etc/build/files</directory>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ <excludes>
+ <exclude>*.sh</exclude>
+ </excludes>
+ <outputDirectory>.</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>${basedir}/etc/build/files</directory>
+ <includes>
+ <include>*.sh</include>
+ </includes>
+ <fileMode>755</fileMode>
+ <outputDirectory>.</outputDirectory>
+ </fileSet>
+ </fileSets>
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>/libs</outputDirectory>
+ <useProjectArtifact>true</useProjectArtifact>
+ <unpack>false</unpack>
+ <scope>runtime</scope>
+ </dependencySet>
+ </dependencySets>
+</assembly>
diff --git a/securis/pom.xml b/securis/pom.xml
index a9933b3..5d78a37 100644
--- a/securis/pom.xml
+++ b/securis/pom.xml
@@ -1,8 +1,8 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.curisit</groupId>
- <artifactId>securis</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <artifactId>securis-server</artifactId>
+ <version>0.0.2-SNAPSHOT</version>
<name>SeCuris</name>
<description>CurisTEC Server Licenses</description>
<dependencies>
@@ -62,7 +62,21 @@
<target>1.7</target>
</configuration>
</plugin>
- </plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.4</version>
+ <configuration>
+ <formats>
+ <format>zip</format>
+ <format>tar.gz</format>
+ </formats>
+ <descriptors>
+ <descriptor>etc/build/pro/mvn_descriptor.xml</descriptor>
+ </descriptors>
+ <appendAssemblyId>false</appendAssemblyId>
+ </configuration>
+ </plugin>
+ </plugins>
</build>
<repositories>
<repository>
diff --git a/securis/src/main/java/net/curisit/securis/MainApp.java b/securis/src/main/java/net/curisit/securis/MainApp.java
deleted file mode 100644
index 96cadaa..0000000
--- a/securis/src/main/java/net/curisit/securis/MainApp.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package net.curisit.securis;
-
-import java.net.URI;
-import java.security.KeyStore;
-import java.util.Properties;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import net.curisit.securis.ioc.RequestsModule;
-import net.curisit.securis.ioc.SecurisModule;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.eclipse.jetty.http.HttpVersion;
-import org.eclipse.jetty.server.Handler;
-import org.eclipse.jetty.server.HttpConfiguration;
-import org.eclipse.jetty.server.HttpConnectionFactory;
-import org.eclipse.jetty.server.SecureRequestCustomizer;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.server.handler.ContextHandlerCollection;
-import org.eclipse.jetty.server.handler.ResourceHandler;
-import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.resource.Resource;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-import org.eclipse.jetty.util.thread.QueuedThreadPool;
-import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
-import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.Key;
-import com.google.inject.name.Names;
-import com.google.inject.persist.PersistFilter;
-import com.google.inject.persist.jpa.JpaPersistModule;
-import com.itextpdf.text.pdf.security.KeyStoreUtil;
-
-public class MainApp {
-
- private static final Logger LOG = LogManager.getLogger(MainApp.class);
-
- private static Server server;
- private static Injector injector = null;
-
- @Inject
- @Named("base-uri")
- private URI uri;
-
- public static void main(String[] args) throws Exception {
- LOG.info("SeCuris init...");
-
- SecurisModule securisModule = new SecurisModule();
- JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");
- Properties props = new Properties();
- props.put("javax.persistence.jdbc.password", securisModule.getPassword());
- props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));
- LOG.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());
- jpaPersistModule.properties(props);
-
- injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);
-
- startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
- while (true) {
- Thread.currentThread().sleep(100);
- }
- }
-
- private static void startServer(URI uri) throws Exception {
- System.out.println("Starting jetty...");
-
- QueuedThreadPool threadPool = new QueuedThreadPool();
- threadPool.setMaxThreads(50);
-
- server = new Server(9997);
- ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
- context.setContextPath("/");
- context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
-
- context.setInitParameter("resteasy.role.based.security", "true");
- context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
- context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);
- ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
- sh.setName("resteasy");
- context.addServlet(sh, "/*");
-
- ResourceHandler staticResources = new ResourceHandler();
- staticResources.setBaseResource(Resource.newResource(MainApp.class.getResource("/static").toURI()));
- staticResources.setWelcomeFiles(new String[] {
- "/main.html"
- });
- context.setHandler(staticResources);
-
- ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
- context.setErrorHandler(errorHandler);
- LOG.info("Error Handlers: " + context.getErrorHandler());
- ContextHandlerCollection contexts = new ContextHandlerCollection();
-
- contexts.setHandlers(new Handler[] {
- staticResources, context
- });
-
- HttpConfiguration http_config = new HttpConfiguration();
- http_config.setSecureScheme("https");
- http_config.setSecurePort(8443);
- http_config.setOutputBufferSize(32768);
- http_config.setSendServerVersion(true);
- http_config.setSendDateHeader(false);
-
-
- HttpConfiguration https_config = new HttpConfiguration(http_config);
- https_config.addCustomizer(new SecureRequestCustomizer());
-
- SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setKeyStorePath("/Users/rob/.ssh/keys/securis.pkcs12");
- sslContextFactory.setKeyStoreType("PKCS12");
- sslContextFactory.setKeyStorePassword("curist3c");
- //sslContextFactory.setCertAlias("1");
-// sslContextFactory.setKeyManagerPassword("curist3c");
-// sslContextFactory.setTrustStorePath("/Users/rob/.ssh/keys/keystore");
-// sslContextFactory.setTrustStorePassword("curist3c");
- sslContextFactory.checkKeyStore();
- sslContextFactory.setNeedClientAuth(false);
- LOG.info("Protocol: {}", sslContextFactory.getProtocol());
-
- ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(https_config));
- sslConnector.setPort(8443);
- sslConnector.setHost("securis.curistec.com");
- server.addConnector( sslConnector );
-
- server.setHandler(context);
- server.setStopAtShutdown(true);
- server.start();
- server.join();
-
- LOG.info("Started server in: http://127.0.0.1:9997/");
- }
-
-}
diff --git a/securis/src/main/java/net/curisit/securis/SeCurisServer.java b/securis/src/main/java/net/curisit/securis/SeCurisServer.java
new file mode 100644
index 0000000..3f98d84
--- /dev/null
+++ b/securis/src/main/java/net/curisit/securis/SeCurisServer.java
@@ -0,0 +1,234 @@
+package net.curisit.securis;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Properties;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import net.curisit.securis.ioc.RequestsModule;
+import net.curisit.securis.ioc.SecurisModule;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.eclipse.jetty.http.HttpVersion;
+import org.eclipse.jetty.server.Handler;
+import org.eclipse.jetty.server.HttpConfiguration;
+import org.eclipse.jetty.server.HttpConnectionFactory;
+import org.eclipse.jetty.server.SecureRequestCustomizer;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
+import org.eclipse.jetty.server.handler.ContextHandlerCollection;
+import org.eclipse.jetty.server.handler.ResourceHandler;
+import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener;
+import org.eclipse.jetty.util.component.LifeCycle;
+import org.eclipse.jetty.util.resource.Resource;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.QueuedThreadPool;
+import org.jboss.resteasy.plugins.guice.GuiceResteasyBootstrapServletContextListener;
+import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Key;
+import com.google.inject.name.Names;
+import com.google.inject.persist.PersistFilter;
+import com.google.inject.persist.jpa.JpaPersistModule;
+
+public class SeCurisServer {
+
+ private static final Logger LOG = LogManager.getLogger(SeCurisServer.class);
+ private static final Logger CONSOLE = LogManager.getLogger("console");
+
+ private static final String PID_FILE = System.getProperty("user.home") + "/.SeCuris/securis-server.pid";
+
+ private static Server server;
+ private static Injector injector = null;
+
+ @Inject
+ @Named("base-uri")
+ private URI uri;
+
+ private static void showHelp() {
+ CONSOLE.info("Execute SeCuris server using:");
+ CONSOLE.info(" $ ./securis-server.sh {start|stop}");
+ }
+
+ public static void main(String[] args) throws Exception {
+ String command;
+ if (args.length > 0) {
+ command = args[0].toLowerCase();
+ } else {
+ command = "start";
+ }
+
+ switch (command) {
+ case "start":
+ startServer();
+ break;
+ case "stop":
+ stopServer();
+ break;
+
+ default:
+ showHelp();
+ System.exit(-1);
+ }
+ }
+
+ private static void stopServer() {
+ if (!new File(PID_FILE).exists()) {
+ CONSOLE.error("SeCuris server is NOT running or PID file is missing");
+ System.exit(-3);
+ }
+ try {
+ int pid = Integer.parseInt(FileUtils.readFileToString(new File(PID_FILE)));
+ Runtime.getRuntime().exec("kill -SIGINT " + pid);
+ new File(PID_FILE).delete();
+ CONSOLE.info("SeCuris server process stopped sucessfully (PID: {})", pid);
+ } catch (NumberFormatException | IOException e) {
+ LOG.error("Error getting SeCuris server process PID from file: {}", PID_FILE);
+ }
+ }
+
+ private static void startServer() {
+
+ if (new File(PID_FILE).exists()) {
+ try {
+ CONSOLE.error("SeCuris server is already running with PID: {}", FileUtils.readFileToString(new File(PID_FILE)));
+ } catch (IOException e) {
+ LOG.error("Unexpected error", e);
+ }
+ System.exit(-2);
+ }
+
+ SecurisModule securisModule = new SecurisModule();
+ JpaPersistModule jpaPersistModule = new JpaPersistModule("localdb");
+ Properties props = new Properties();
+ props.put("javax.persistence.jdbc.password", securisModule.getPassword());
+ props.put("javax.persistence.jdbc.url", securisModule.getUrl(securisModule.getAppDir()));
+ LOG.info("BD Url: {} {}", securisModule.getUrl(securisModule.getAppDir()), securisModule.getPassword());
+ jpaPersistModule.properties(props);
+
+ injector = Guice.createInjector(securisModule, new RequestsModule(), jpaPersistModule);
+
+ try {
+ startServer(injector.getInstance(Key.get(URI.class, Names.named("base-uri"))));
+
+ } catch (SeCurisException e) {
+ CONSOLE.error("Error launching the SeCuris server, {}", e);
+ }
+ }
+
+ private static void savePID() throws SeCurisException {
+ String runtimeName = ManagementFactory.getRuntimeMXBean().getName();
+ // runtimeName contains something like: "12345@localhost"
+ String pid = runtimeName.substring(0, runtimeName.indexOf('@'));
+ try {
+ FileUtils.writeStringToFile(new File(PID_FILE), pid);
+ CONSOLE.info("SeCuris server process started sucessfully (PID: {})", pid);
+ } catch (IOException e) {
+ LOG.error("Error saving pid file", e);
+ throw new SeCurisException("Error saving pid file");
+ }
+ }
+
+ private static void startServer(URI uri) throws SeCurisException {
+ System.out.println("Starting jetty...");
+
+ QueuedThreadPool threadPool = new QueuedThreadPool();
+ threadPool.setMaxThreads(50);
+
+ server = new Server(9997);
+ ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
+ context.setContextPath("/");
+ context.addEventListener(injector.getInstance(GuiceResteasyBootstrapServletContextListener.class));
+
+ context.setInitParameter("resteasy.role.based.security", "true");
+ context.setInitParameter("resteasy.providers", DefaultExceptionHandler.class.getName());
+ context.addFilter(new FilterHolder(injector.getInstance(PersistFilter.class)), "/*", null);
+ ServletHolder sh = new ServletHolder(HttpServletDispatcher.class);
+ sh.setName("resteasy");
+ context.addServlet(sh, "/*");
+
+ ResourceHandler staticResources = new ResourceHandler();
+ try {
+ staticResources.setBaseResource(Resource.newResource(SeCurisServer.class.getResource("/static").toURI()));
+ } catch (IOException | URISyntaxException e) {
+ LOG.error("Error configuring static resources", e);
+ throw new SeCurisException("Error configuring static resources");
+ }
+ staticResources.setWelcomeFiles(new String[] {
+ "/main.html"
+ });
+ context.setHandler(staticResources);
+
+ ErrorPageErrorHandler errorHandler = new ErrorPageErrorHandler();
+ context.setErrorHandler(errorHandler);
+ LOG.info("Error Handlers: " + context.getErrorHandler());
+ ContextHandlerCollection contexts = new ContextHandlerCollection();
+
+ contexts.setHandlers(new Handler[] {
+ staticResources, context
+ });
+
+ HttpConfiguration http_config = new HttpConfiguration();
+ http_config.setSecureScheme("https");
+ http_config.setSecurePort(8443);
+ http_config.setOutputBufferSize(32768);
+ http_config.setSendServerVersion(true);
+ http_config.setSendDateHeader(false);
+
+
+ HttpConfiguration https_config = new HttpConfiguration(http_config);
+ https_config.addCustomizer(new SecureRequestCustomizer());
+
+ SslContextFactory sslContextFactory = new SslContextFactory();
+ sslContextFactory.setKeyStorePath("/Users/rob/.ssh/keys/securis.pkcs12");
+ sslContextFactory.setKeyStoreType("PKCS12");
+ sslContextFactory.setKeyStorePassword("curist3c");
+ //sslContextFactory.setCertAlias("1");
+// sslContextFactory.setKeyManagerPassword("curist3c");
+// sslContextFactory.setTrustStorePath("/Users/rob/.ssh/keys/keystore");
+// sslContextFactory.setTrustStorePassword("curist3c");
+ sslContextFactory.checkKeyStore();
+ sslContextFactory.setNeedClientAuth(false);
+ LOG.info("Protocol: {}", sslContextFactory.getProtocol());
+
+ ServerConnector sslConnector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()), new HttpConnectionFactory(https_config));
+ sslConnector.setPort(8443);
+ sslConnector.setHost("securis.curistec.com");
+ server.addConnector( sslConnector );
+
+ server.setHandler(context);
+ server.setStopAtShutdown(true);
+ server.addLifeCycleListener(new ServerStoppedListener());
+ try {
+ server.start();
+ savePID();
+ server.join();
+ } catch (Exception e) {
+ LOG.error("Error starting SeCurisServer", e);
+ throw new SeCurisException("Error starting SeCurisServer");
+ }
+
+ }
+
+ static class ServerStoppedListener extends AbstractLifeCycleListener {
+ @Override public void lifeCycleStopped(LifeCycle event) {
+ if (new File(PID_FILE).exists())
+ new File(PID_FILE).delete();
+ }
+ }
+
+}
diff --git a/securis/src/main/resources/log4j2.xml b/securis/src/main/resources/log4j2.xml
index 901545f..90895bd 100644
--- a/securis/src/main/resources/log4j2.xml
+++ b/securis/src/main/resources/log4j2.xml
@@ -2,22 +2,39 @@
<Configuration>
<Appenders>
- <File name="defaultFile" fileName="${sys:user.home}/.SeCuris/log/securis.log" append="false">
+ <RollingFile name="defaultFile" fileName="${sys:user.home}/.SeCuris/logs/securis-server.log" append="true"
+ filePattern="${sys:user.home}/.SeCuris/logs/securis-server-%d{yyyy-MM-dd-HH}.log.gz">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
- </File>
-
+ <Policies>
+ <TimeBasedTriggeringPolicy interval="1" modulate="true" />
+ </Policies>
+ <DefaultRolloverStrategy max="10"/>
+ </RollingFile>
+ <Async name="defaultFileAsync" includeLocation="true">
+ <AppenderRef ref="defaultFile"/>
+ </Async>
+
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+ </Console>
+
+ <Console name="console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
- <Logger name="net.curisit" level="INFO">
- <AppenderRef ref="defaultFile"/>
+ <Logger name="net.curisit" level="INFO" additivity="false">
+ <AppenderRef ref="defaultFileAsync"/>
+ <AppenderRef ref="stdout"/>
</Logger>
-
- <Root level="OFF">
+
+ <Logger name="console" level="INFO" additivity="false">
+ <AppenderRef ref="console"/>
+ </Logger>
+
+ <Root level="INFO" >
<AppenderRef ref="stdout"/>
</Root>
--
Gitblit v1.3.2