Сначала вы должны инициализировать $ R, $ P и $ S в false. Затем прочитайте пользовательский ввод 1x в $ input. Остальные сценарии выглядят хорошо.
<?php
$R = $P = $S = false;
$input= stream_get_line(STDIN, 1, "\n");
Вы становитесь дублированными, потому что Вы говорите этому регистрировать сообщения дважды. Я не рекомендовал бы использовать аддитивность здесь, так как Вы могли бы испытать некоторые побочные эффекты, просто удалить ненужную конфигурацию:
<root>
<level value="WARN" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</root>
<logger name="myprogram">
<level value="INFO" />
</logger>
Вы не должны указывать appender-касательно в регистраторе myprogram, так как он наследует их от корневого регистратора; при определении их снова, это зарегистрируется дважды.
Попробуйте этим изменением, установив аддитивность на ложь.
<root>
<level value="WARN" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</root>
<logger name="myprogram" additivity="false">
<level value="INFO" />
<appender-ref ref="Console" />
<appender-ref ref="LogFile" />
</logger>