写错误日志,但我不知道如何组织它

时间:2013-02-24 07:50:36

标签: php fopen fwrite fclose

我有两个函数在执行preg_match来检查emp#和电子邮件是否有效。 如果其中一个或两个无效,则会打印到error.log 但我想以某种方式组织它......让我看看我是否知道如何尽可能简单。

假设emp#无效,那么错误日志将显示

date()
emp#

如果电子邮件无效,则错误日志将显示

date()
email

如果两者都无效,则错误日志将显示

date()
emp#
email

事情是,当两者都发生时,我不希望它打印日期两次或多于一次emp#或电子邮件无效,日期不会重复只会打印像

date()
emp#
emp#
emp$

希望我的解释有意义......我现在拥有的是

    if(((isEmailAddressWellFormed($column[3]) == false)) && ((isStudentNumberWellFormed($column[0]) == false)))
    {
        $filehandle = fopen("./courses/path/error.log","a+") or die ("File can not be opened");
        fwrite($filehandle, date("F t, Y (h:i:s a)") . PHP_EOL);
        fwrite($filehandle, "Improper email address from " . $_GET["filename"] . " :" . PHP_EOL);
        fwrite($filehandle, "$column[2] $column[1] $column[3]\n" . PHP_EOL);
        fwrite($filehandle, "Improper student numbers from " . $_GET["filename"] . " :" . PHP_EOL);
        fwrite($filehandle, "$column[2] $column[1] $column[0]\n" . PHP_EOL);
        fclose($filehandle);        
    }
    else
{
    if(isEmailAddressWellFormed($column[3]) == false)
    {
        $filehandle = fopen("./courses/path/error.log","a+") or die ("File can not be opened");
        fwrite($filehandle, date("F t, Y (h:i:s a)") . PHP_EOL);
        fwrite($filehandle, "Improper email address from " . $_GET["filename"] . " :" . PHP_EOL);
        fwrite($filehandle, "$column[2] $column[1] $column[3]\n" . PHP_EOL);
        fclose($filehandle);
    }

    if(isStudentNumberWellFormed($column[0]) == false)
    {
        $filehandle = fopen("./courses/path/error.log","a+") or die ("File can not be opened");
        fwrite($filehandle, date("F t, Y (h:i:s a)") . PHP_EOL);
        fwrite($filehandle, "Improper student numbers from " . $_GET["filename"] . " :" . PHP_EOL);
        fwrite($filehandle, "$column[2] $column[1] $column[0]\n" . PHP_EOL);
        fclose($filehandle);
    }
}

但是我知道它没有得到我想要的东西......任何简单的方法我都可以实现它?

3 个答案:

答案 0 :(得分:1)

$errors = array();

if(!isEmailAddressWellFormed($column[3]))
{
    $errors[] = "Improper email address from " . $_GET["filename"] . " :";
    $errors[] = "$column[2] $column[1] $column[3]";
}

if(!isStudentNumberWellFormed($column[0]))
{
    $errors[] = "Improper student numbers from " . $_GET["filename"] . " :";
    $errors[] = "$column[2] $column[1] $column[0]";
}

if (!empty($errors))
{
    $filehandle = fopen("./courses/path/error.log","a+") or die ("File can not be opened");
    fwrite($filehandle, date("F t, Y (h:i:s a)") . PHP_EOL);
    fwrite($filehandle, implode(PHP_EOL, $errors);
    fclose($filehandle);
}

答案 1 :(得分:0)

有很多方法可以解决这个问题。你可以这样做的一种方式是:

$error = false;

if (!isEmailAddressWellFormed($column[3]))
{
    $emailError = "Improper email address from " . $_GET["filename"] . " :" . PHP_EOL . "$column[2] $column[1] $column[3]\n" . PHP_EOL;
    $error = true;
}

if (!isStudentNumberWellFormed($column[0]))
{
    $studentError = "Improper student numbers from " . $_GET["filename"] . " :" . PHP_EOL . "$column[2] $column[1] $column[0]\n" . PHP_EOL;
    $error = true;
}

if ($error)
{
    $handle = fopen("./courses/path/error.log","a+") or die ("File can not be opened");

    fwrite($filehandle, date("F t, Y (h:i:s a)") . PHP_EOL);

    if (isset($emailError))
        fwrite($handle, $emailError);

    if (isset($studentError))
        fwrite($handle, $studentError);

    fclose($handle);
}

答案 2 :(得分:0)

尝试使用日志类来编写错误

https://github.com/soroushatarod/Loggerr