Migrando para log4j2


Com a versão 22.1 minor update 1, o IBM Sterling® Order Management System usa log4j2 para o registro e não envia o arquivo log4j v1.2.17.jar.

A classe YFCLogCategory, que é usada principalmente para registro pelo código do Sterling™ Order Management System e também pelo código do cliente, não estende org.apache.log4j.Category, que é uma classe log4j 1.x. Seu código customizado será impactado com esta liberação se você estiver usando métodos que não são definidos pela classe YFCLogCategory Os métodos que não são definidos pela classe YFCLogCategory e estão disponíveis na classe-pai org.apache.log4j.Category não são suportados.

Depois de aplicar a liberação 22.1 minor update 1 , é possível consultar métodos no Javadoc principal atualizado. Os métodos a seguir são incluídos na classe YFCLogCategory para assegurar que não ocorram falhas de tempo de execução do código customizado No entanto, esses são métodos simulados e podem ser removidos em uma liberação posterior
  • public void log(Object level, Object obj)
  • public void setLevel(Object level)
  • public boolean isEnabledFor(Object level)
Mudanças de código customizado
Importante:

O método YFCLogCategory.getLogger() não é suportado.. Em vez disso, use o método YFCLogCategory.instance(Class.class)

Por exemplo,
private static YFCLogCategory logger = YFCLogCategory.instance(MyClassName.class);
Verifique seu código customizado e faça as seguintes mudanças:
  • Se você estiver convertendo a instância do YFCLogCategory para org.apache.log4j.Category ou org.apache.log4j.Logger, ela não será suportada Converter uma instância de YFCLogCategory para org.apache.log4j.Logger ou org.apache.log4j.Category não é compilado ao gravar novo código. Para o código customizado existente que possui esses casts, o código customizado encontra o ClassCastException no tempo de execução Por exemplo, a linha #2 e #3 do padrão de código a seguir não são suportadas.
    YFCLogCategory LOGGER = YFCLogCategory.instance(MyClass.class.getName());
    org.apache.log4j.Logger apLogger=(org.apache.log4j.Logger)LOGGER;          // Not supported
    org.apache.log4j.Category apCategory=(org.apache.log4j.Category)LOGGER;    // Not supported
  • Se você estiver chamando log(Level level, Object), substitua-o por métodos específicos como error (Object) ou debug (Object) que são fornecidos pela classe YFCLogCategory .
  • Se você estiver chamando setLevel(Level level), deverá excluí-lo. Não é possível mudar níveis de criadores de logs no log4j2 porque ele não é suportado na API log4j2 . O gerenciamento adicional dos níveis de log é feito pelo código e você deve criar rastreios para partes específicas do código para as quais deseja a criação de log estendida.
  • Se estiver chamando isEnabledFor(Level level), substitua-o por métodos específicos, como isInfoEnabled ou isTimerEnabled.

Descontinuação dos frascos de log4j-1.x

Os log4j-1.x jars não são suportados no sistema IBM Sterling Order Management como parte do pacote de personalização do cliente.

Descontinuação dos jars de ponte log4j1 para log4j2

Os potes de ponte log4j1 a log4j2 não são suportados. Por exemplo, adicionar log4j-1.2-api-2.17.1.jar a um pacote de personalização não é compatível.

Bibliotecas de terceiros

Você deve atualizar seu código personalizado ou atualizar quaisquer jars de terceiros que ainda dependam de log4j-1.x. Log4j-1.x está obsoleto e não é mais suportado pelo Apache. Se você tiver bibliotecas de terceiros que ainda exigem log4j 1.x, provavelmente se trata de bibliotecas desatualizadas. Você deve migrar para a versão mais recente dessas bibliotecas de terceiros ou procurar alternativas mais seguras se as bibliotecas forem atualizadas para usar log4j2.