diff --git a/update-server-mock/build.gradle b/update-server-mock/build.gradle index ef1f5e31bc82..692861f2fc02 100644 --- a/update-server-mock/build.gradle +++ b/update-server-mock/build.gradle @@ -10,6 +10,8 @@ apply plugin: 'kotlin' repositories { jcenter() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.+" + compile "org.apache.logging.log4j:log4j-api:2.+" + runtime "org.apache.logging.log4j:log4j-core:2.+" testCompile "junit:junit:4.+" testCompile "org.assertj:assertj-core:3.+" } diff --git a/update-server-mock/log4j.xml b/update-server-mock/log4j.xml new file mode 100644 index 000000000000..2e4483adb2f7 --- /dev/null +++ b/update-server-mock/log4j.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/update-server-mock/src/main/java/com/intellij/updater/mock/Server.kt b/update-server-mock/src/main/java/com/intellij/updater/mock/Server.kt index 930efcc25892..d2b0c1cfb236 100644 --- a/update-server-mock/src/main/java/com/intellij/updater/mock/Server.kt +++ b/update-server-mock/src/main/java/com/intellij/updater/mock/Server.kt @@ -16,6 +16,7 @@ package com.intellij.updater.mock import com.sun.net.httpserver.HttpServer +import org.apache.logging.log4j.LogManager import java.net.HttpURLConnection.* import java.net.InetSocketAddress import java.net.URI @@ -24,6 +25,7 @@ import java.time.format.DateTimeFormatter class Server(private val port: Int, private val generator: Generator) { private val server = HttpServer.create() + private val log = LogManager.getLogger(Server::class.java) private val buildFormat = "([A-Z]+)-([0-9.]+)".toRegex() private val tsFormat = DateTimeFormatter.ofPattern("dd/MMM/yyyy:kk:mm:ss ZZ") @@ -35,18 +37,23 @@ class Server(private val port: Int, private val generator: Generator) { process(ex.requestMethod, ex.requestURI) } catch(e: Exception) { - e.printStackTrace() + log.error(e) Response(HTTP_INTERNAL_ERROR, "Internal error") } - val contentType = if (response.type.startsWith("text/")) response.type + "; charset=utf-8" else response.type - ex.responseHeaders.add("Content-Type", contentType) - ex.sendResponseHeaders(response.code, response.bytes.size.toLong()) - ex.responseBody.write(response.bytes) - ex.close() + try { + val contentType = if (response.type.startsWith("text/")) "${response.type}; charset=utf-8" else response.type + ex.responseHeaders.add("Content-Type", contentType) + ex.sendResponseHeaders(response.code, response.bytes.size.toLong()) + ex.responseBody.write(response.bytes) + ex.close() - println("${ex.remoteAddress.address.hostAddress} - - [${tsFormat.format(ZonedDateTime.now())}]" + - " \"${ex.requestMethod} ${ex.requestURI}\" ${ex.responseCode} ${response.bytes.size}") + log.info("${ex.remoteAddress.address.hostAddress} - - [${tsFormat.format(ZonedDateTime.now())}]" + + " \"${ex.requestMethod} ${ex.requestURI}\" ${ex.responseCode} ${response.bytes.size}") + } + catch(e: Exception) { + log.error(e) + } } server.start() diff --git a/update-server-mock/src/main/java/com/intellij/updater/mock/main.kt b/update-server-mock/src/main/java/com/intellij/updater/mock/main.kt index 4fb8d90b3084..a2cc4997ebbe 100644 --- a/update-server-mock/src/main/java/com/intellij/updater/mock/main.kt +++ b/update-server-mock/src/main/java/com/intellij/updater/mock/main.kt @@ -15,13 +15,24 @@ */ package com.intellij.updater.mock +import org.apache.logging.log4j.LogManager + fun main(args: Array) { if (args.size != 1) { println("usage: java -jar update-server-mock.jar ") System.exit(1) } - val port = args[0].toInt() - val generator = Generator() - Server(port, generator).start() + val log = LogManager.getLogger(Server::class.java) + val port = args[0] + try { + log.info("starting the server on port '$port' ...") + val generator = Generator() + Server(port.toInt(), generator).start() + log.info("ready") + } + catch(e: Exception) { + log.error("failed to start the server", e) + System.exit(2) + } } \ No newline at end of file