mp
01/17/2022, 3:12 PMAleksei Tirman [JB]
01/18/2022, 7:53 AMRescribet
01/18/2022, 10:44 AMX-Request-Id
header, or generate one if it is not available
Joining them into one line would require buffering all logs which doesn’t seem wisemp
01/18/2022, 11:53 AMlog.debug("""
$method $url
$headers
$body
""")
mp
01/18/2022, 11:59 AMmeaningful
data in one placeAleksei Tirman [JB]
01/18/2022, 1:03 PMmp
01/19/2022, 10:52 AMAleksei Tirman [JB]
01/26/2022, 11:12 AMsuspend fun main(): Unit = coroutineScope {
val client = HttpClient(Apache) {
install(Logging) {
level = LogLevel.ALL
logger = OneLineLogger()
}
}
client.get<String>("<https://httpbin.org/get>")
}
class OneLineLogger: Logger {
private val lines = mutableListOf<String>()
private val logger = Logger.DEFAULT
override fun log(message: String) {
lines.add(message)
if (message.startsWith("BODY END")) {
logger.log(lines.joinToString(separator = "\n"))
}
}
}
Unfortunately, this way two entries are logged for a request and response instead of one.mp
02/03/2022, 8:07 PMlogger = OneLineLogger()
tnx! very helpfulAlexander Weickmann
10/17/2022, 2:19 PMmp
10/17/2022, 2:20 PMAlexander Weickmann
10/17/2022, 2:21 PMAlexander Weickmann
10/17/2022, 2:21 PMmp
10/17/2022, 2:21 PMAlexander Weickmann
10/17/2022, 2:22 PMmp
10/17/2022, 2:24 PMAlexander Weickmann
10/17/2022, 2:28 PMmp
10/17/2022, 2:30 PMAlexander Weickmann
10/17/2022, 2:30 PMAlexander Weickmann
10/17/2022, 2:32 PMinstall(Logging) {
logger = Logger.DEFAULT
level = <http://LogLevel.INFO|LogLevel.INFO>
}
Alexander Weickmann
10/17/2022, 2:32 PMimplementation("io.ktor", "ktor-client-logging", "2.1.2")
Alexander Weickmann
10/17/2022, 2:38 PMmp
10/17/2022, 2:40 PMmp
10/24/2022, 4:17 PMinstall(Logging) {
level = LogLevel.ALL
}
and logs that I got comes as
2022-10-24 18:59:46.218 INFO --- [ main @coroutine#5] i.k.c.HttpClient.log(14) : REQUEST: <https://countrycode.org/api/countryCode/countryMenu>
METHOD: HttpMethod(value=GET)
COMMON HEADERS
-> Accept: application/json
-> Accept-Charset: UTF-8
CONTENT HEADERS
-> Content-Length: 0
BODY Content-Type: null
BODY START
BODY END
2022-10-24 18:59:47.828 INFO --- [-worker-4 @ktor-cio-context#24] i.k.c.HttpClient.log(14) : RESPONSE: 200
METHOD: HttpMethod(value=GET)
FROM: <https://countrycode.org/api/countryCode/countryMenu>
COMMON HEADERS
-> cache-control: public, max-age=2592000
-> content-type: application/json;charset=UTF-8
-> date: Mon, 24 Oct 2022 15:59:47 GMT
-> lc-cache: MISS
-> server: nginx/1.22.0
-> transfer-encoding: chunked
-> x-frame-options: SAMEORIGIN
-> x-upstream: lax-p14
BODY Content-Type: application/json; charset=UTF-8
BODY START
[
{
"code": "af",
"name": "Afghanistan",
"path": "afghanistan"
},
ktor version 2.0.2
I don’t know how to explain this difference (one line logger as I’ve mentioned before - was removed)
🤯mp
10/24/2022, 4:53 PMAlexander Weickmann
11/10/2022, 4:18 PM404 Not Found: GET - <urlPath>
Alexander Weickmann
11/10/2022, 4:19 PM