Ввод, как изначально приведенный, не совсем корректен JSON, и неясно, каков желаемый результат, но может представлять интерес следующее. Он написан для текущей версии jq (версия 1.5), но может быть легко адаптирован для jq 1.4:
def json2qjson:
def pp: if type == "string" then "\"\(.)\"" else . end;
. as $in
| foreach keys[] as $k (null; null; "\"\($k)\": \($in[$k] | pp)" ) ;
def data: {
"@timestamp": "2015-09-22T10:54:35.449+02:00",
"@version": 1,
"HOSTNAME": "server1.example",
"level": "WARN",
"level_value": 30000,
"logger_name": "server1.example.adapter",
"message": "message",
"stack_trace": "ERROR LALALLA\nERROR INFO NANANAN\nSOME MORE ERROR INFO\nBABABABABABBA BABABABA ABABBABAA BABABABAB\n"
};
data | json2qjson
Выход:
$ jq -rnf json2qjson.jq
"@timestamp": "2015-09-22T10:54:35.449+02:00"
"@version": 1
"HOSTNAME": "server1.example"
"level": "WARN"
"level_value": 30000
"logger_name": "server1.example.adapter"
"message": "message"
"stack_trace": "ERROR LALALLA
ERROR INFO NANANAN
SOME MORE ERROR INFO
BABABABABABBA BABABABA ABABBABAA BABABABAB
"
Прочитайте Этот блог-пост о ваших проблемах деятельности.
Способ подумать о AOP - поставить предоставленные функциональные преимущества в первую очередь. Если автоматическое ведение журнала - это ваше требование, и AOP подходит ему - пойти на него.
Это сказал, что плетение времени нагрузки, конечно, предпочтительно, если требуется мелкозернистая регистрация.
Я использовал весну AOP для реализации регистрации, так что я делюсь Наблюдения:
это
, обрабатывая вместо ручки, обернутой AOP), и поэтому не может быть зарегистрирована. Таким образом, все ведение журнала могут произойти только на границах интерфейса. (Это касается использования аспектов на основе прокси-сервера, есть возможность подкласса времени выполнения с CGLIB, но я его не использовал)