В моем случае мне нужно отправить сообщения журнала в мою учетную запись Azure Log Analytics. Я хотел воспользоваться преимуществами HTTP Appender и REST API Log Analytics.
Основная проблема заключается в том, что REST API нужны некоторые значения, например, сигнатура, которую необходимо вычислить во время выполнения, чтобы принять запрос журнала.
Как сообщается здесь:
https://docs.microsoft.com/it-it/azure/log-analytics/log-analytics-data-collector-api
Заголовок авторизации должен иметь вид:
Authorization: SharedKey <WorkspaceID>:<Signature>
Где подпись =
StringToSign = VERB + "\n" +
Content-Length + "\n" +
Content-Type + "\n" +
x-ms-date + "\n" +
"/api/logs";
i.e.: POST\n1024\napplication/json\nx-ms-date:Mon, 04 Apr 2016 08:00:00 GMT\n/api/logs
Signature=Base64(HMAC-SHA256(UTF8(StringToSign)))
Вот как я настраивал свой http-appender:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="DEBUG">
<Appenders>
<Http name="HttpAppender" url="https://sharedkey.ods.opinsights.azure.com/api/logs?api-version=2016-04-01" method="POST">
<Property name="Accept" value="application/json" />
<Property name="Log-Type" value="SafeClient" />
<Property name="Authorization" value="{message_signature}" />
<Property name="x-ms-date" value={current_date} />
</Http>
<Async name="asyncHttp" bufferSize="1000" includeLocation="true">
<AppenderRef ref="HttpAppender" />
</Async>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="asyncHttp" />
</Root>
</Loggers>
</configuration>
Как можно ввести с помощью кода {message_signature} и {current_date}? каждый раз, когда вызывается logger.info ... debug ... error ....
Это лучший и самый простой способ реализовать это решение? или я должен реализовать свой собственный appender?