Рекомендуемый регистратор для использования с Java, Будьте в спящем режиме и [закрытый] Spring

Это старый вопрос, но вот что вы можете сделать, если хотите, чтобы Spring действительно создала для вас URI.

@RestController
@RequestMapping("/api/v1")
class JobsController {

  @PostMapping("/jobs")
  fun createJob(@RequestParam("use-gpu") useGPU: Boolean?): ResponseEntity<Unit> {

    val headers = HttpHeaders()

    val jobId = "TBD id"

    headers.location =
            MvcUriComponentsBuilder
                    .fromMethodName(JobsController::class.java, "getJob", jobId)
                    .buildAndExpand(jobId)
                    .toUri()

    return ResponseEntity(headers, HttpStatus.CREATED)
  }

  @GetMapping("/job/{jobId}")
  fun getJob(@PathVariable jobId: String) = ... // fetch job
}

В этом примере (который написан на Kotlin, но похож на Java), базовый URI равен /api/v1 (определен в верхней части класса). Использование вызова MvcUriComponentsBuilder.fromMethodName позволяет Spring определить правильный полный URI. (MvcUriComponentsBuilder был добавлен в 4.0).

7
задан Steve Kuo 2 June 2009 в 18:36
поделиться

6 ответов

При создании приложений из различных фреймворков вам часто нужно обернуть существующие регистраторы, будь то log4j, JUL или JULI или что-то еще. Стандартным приложением для этого является Simple Logging Facade для Java (SLF4J) . Даже если вашему приложению не нужен SLF4J сейчас, вы можете позже добавить библиотеку, которая в нем нуждается, и это ваша лучшая надежда на один файл конфигурации в долгосрочной перспективе.

Помня об этом, вы должны придерживаться протоколирования пакетов который поддерживает SLF4J, но обычно это сводится к java.util.logging (JUL) или log4j Apache. Это было предметом споров в течение некоторого времени, и вы можете найти множество мнений с обеих сторон.

Лично я считаю, что жаль, что ведение журнала Java в этой ситуации , и Я'

13
ответ дан 6 December 2019 в 05:43
поделиться

Никого не уволили за выбор log4j.

Также проверьте slf4j.

5
ответ дан 6 December 2019 в 05:43
поделиться

log4j - это стандартный регистратор, который я использую. Вы можете настроить уровни ведения журнала и файлы журнала для каждого пакета, чтобы Hibernate, Spring и ваш код могли обращаться к собственным файлам журнала.

7
ответ дан 6 December 2019 в 05:43
поделиться

Hibernate уже использует SLF4J. Если я не ошибаюсь, текущая версия Spring полагается на общее ведение журнала, но в следующей версии также будет использоваться SLF4J. В любом случае, вы можете объединить все журналы через SLF4J (см. Раздел о jcl-over-slf4j.jar). Как только это будет сделано, вы можете выбрать любой из java.util.logging, log4j или logback в качестве базовой инфраструктуры ведения журнала.

4
ответ дан 6 December 2019 в 05:43
поделиться

Вообще говоря, ведение журнала Commons не требуется и плохой выбор для веб-приложений (и автономных приложений). Несколько хороших писем о том, почему:

Подумайте еще раз, прежде чем внедрять API общего журналирования.

Ведение журнала Commons было моей ошибкой

1
ответ дан 6 December 2019 в 05:43
поделиться

Я использую API Apache Commons Logging с файлом конфигурации log4j (файл конфигурации log4j прост, понятен новичку и содержит множество примеров для работы. .

Я предпочитаю использовать API протоколирования commons, потому что он не зависит от файла конфигурации. Его можно настроить с помощью форматов файлов для любого количества популярных пакетов протоколирования.

Вот простая установка log4j, которая распечатает отладочную информацию для вашего собственные пакеты, уровень INFO для spring и hibernate и WARN для всего остального:

# Global logging configuration
log4j.rootLogger=WARN, stdout
log4j.category.org.mydomain.org=DEBUG
log4j.category.org.hibernate=INFO
log4j.category.org.springframework=INFO


# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%t] %c - %m%n
3
ответ дан 6 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

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