SLF4J记录器未执行{}替换

时间:2017-04-14 19:38:41

标签: java logging logback slf4j

我目前在班上使用slf4j logger:

<?php
if(!empty($_POST['bedrooms_selection'])){
$services[]='Bedrooms: '.$_POST['bedrooms_selection'];
}
if(!empty($_POST['dining_selection'])){
$services[]='Dining Rooms: '.$_POST['dining_selection'];
}
if(!empty($_POST['family_room_selection'])){
$services[]='Family Rooms: '.$_POST['family_room_selection'];
}
if($services){
$email_subject = "Price Quote";
$email_body='Carpet Services Needed: \n'.implode("\n",$services);
$to = "jon@example.com";
$headers = "From: $email";
mail($to, $email_subject, $email_body, $headers);
header("Location: http://example.com");
}
else{
echo 'You have to select at least one service';
}
?>

虽然我在代码中使用import org.slf4j.Logger; import org.slf4j.LoggerFactory; 替换如下:

{}

请检查下面的我的回溯配置:

logger.info("User {} successfully logged in to the system",u.getEmail());

即使我使用的是最新的稳定版本slf4j 1.7.25,<encoder> <pattern>%d [%thread] %-5level %logger{36} H:${HOSTNAME} - SC:%X{optionalParam} %msg%n</pattern> </encoder> 仍未正确替换。

以下文本是logger.info的输出:

  

“用户{}已成功登录系统”

我使用LoggerFactory创建记录器:

{}

1 个答案:

答案 0 :(得分:2)

经过一番调查后,我发现问题出现在logback使用的编码器模式中。

我将编码器模式更改为:

 <encoder>
        <pattern>%d [%thread] %-5level %logger{5} H:${HOSTNAME} - %msg%n</pattern>
 </encoder>

一切都开始有效,现在{}替换正在成功执行。