Является ли использование Spring AOP для регистрации хорошей идеей?

Ввод, как изначально приведенный, не совсем корректен 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
"
30
задан Omar Kooheji 15 January 2010 в 11:22
поделиться

2 ответа

Прочитайте Этот блог-пост о ваших проблемах деятельности.

Способ подумать о AOP - поставить предоставленные функциональные преимущества в первую очередь. Если автоматическое ведение журнала - это ваше требование, и AOP подходит ему - пойти на него.

Это сказал, что плетение времени нагрузки, конечно, предпочтительно, если требуется мелкозернистая регистрация.

15
ответ дан 27 November 2019 в 23:54
поделиться

Я использовал весну AOP для реализации регистрации, так что я делюсь Наблюдения:

  • Возможность производительности недостаточно, оно меньше, чем влияние самого ведения журнала
  • , имеющих аспекты, сконфигурированные в конфигурации пружины, вы можете полностью отключить код ведения журнала, если это необходимо
  • Отладка становится более проблематичной, так как следы стека становятся более проблемой Скорее дольше
  • Такое решение достаточно влияет на дизайн. Это не только то, что вы получите кучу интерфейсов и аспектных классов, но вы классы производства должны быть очень «тонкими». Не забывайте, вы не можете перехватить вызовы непубличных методов. Самозаписываются (даже к публичным методам) также не могут быть перехвачены (при работе с голым это , обрабатывая вместо ручки, обернутой AOP), и поэтому не может быть зарегистрирована. Таким образом, все ведение журнала могут произойти только на границах интерфейса. (Это касается использования аспектов на основе прокси-сервера, есть возможность подкласса времени выполнения с CGLIB, но я его не использовал)
  • PointCuts, можно очень сложно. Идея Intellij помогает значительно определить, какие методы должны быть уверены в PointCut.
  • Вообще, мне понравился этот подход и думаю, что стоит использовать, но оно появилось гораздо более сложнее, чем я ожидал
35
ответ дан 27 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: