Я использую wx perl (версия .9932) для интерфейса GUI в моем консольном приложении. Я хочу использовать пользовательский форматировщик журнала, и для этого унаследовал класс от 'Wx :: PlLogFormatter' и переопределил подпрограмму форматирования в производном классе. этот perl пакет Wx :: PlLogFormatter определен в файле log.xs с новыми и уничтожаемыми Xsubs.
MODULE=Wx PACKAGE=Wx::PlLogFormatter
wxPlLogFormatter*
wxPlLogFormatter::new()
CODE:
RETVAL = new wxPlLogFormatter( CLASS );
OUTPUT: RETVAL
void
wxPlLogFormatter::Destroy()
CODE:
delete THIS;
В соответствии со страницей справочника wxwidget, мы можем установить собственный форматер журнала, используя метод Setformatter класса WxLog ,
https://docs.wxwidgets.org/3.0/classwx_log.html https://docs.wxwidgets.org/3.0/classwx_log_formatter.html
Но когда я использую метод SetFormatter с объектом Wx :: LogTextCtrl, он дает мне ниже ошибка
Не удается найти метод объекта "SetFormatter" через пакет "Wx :: LogTextCtrl" в строке 41 MyFrame1.pm.
Это я использую в моем Мой класс Frame для создания целевого объекта Log Wx :: LogTextCtrl
$self->{txtctrl} = Wx::TextCtrl->new($panel,-1,'',[-1,-1],[400,300],wxTE_RICH | wxTE_MULTILINE);
Wx::Log::EnableLogging(1);
my $log =Wx::LogTextCtrl->new( $self->{txtctrl} );
Wx::Log::SetActiveTarget($log);
my $log_format = customLogFormat->new();
$log->SetFormatter($log_format);
my $string = 'frame has been created';
Wx::LogMessage("%s",$string);
и ниже - это мой пользовательский класс форматирования Log
package customLogFormat;
no strict;
use warnings;
use Wx qw(:everything);
use base 'Wx::PlLogFormatter';
sub new {
my $class = shift;
my $self = $class->SUPER::new();
print "$self";
return $self;
}
sub Format {
my ($self,$level,$msg, $log_record)= @_;
my $string = "$level" . "$msg";
return $string;
}
1;
Согласно руководству Wxwidget, выведите класс из класса WxLogFormatter и переопределить его метод форматирования, чтобы создать собственный форматтер журнала и использовать метод Wx :: Log :: SetFormatter () с целевым объектом WxLog.
Есть ли у нас какой-либо метод для использования собственного форматера журнала в wx perl?
спасибо