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.+"
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+
+ <Appenders>
+ <Console name="STDOUT">
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
+ </Console>
+ </Appenders>
+
+ <Loggers>
+ <Root level="info">
+ <AppenderRef ref="STDOUT"/>
+ </Root>
+ </Loggers>
+
+</Configuration>
\ No newline at end of file
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
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")
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()
*/
package com.intellij.updater.mock
+import org.apache.logging.log4j.LogManager
+
fun main(args: Array<String>) {
if (args.size != 1) {
println("usage: java -jar update-server-mock.jar <port>")
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