주식회사 누리아이티

정보자산의 보안강화를 위한 3단계 인증 보안SW(BaroPAM) 전문기업인 누리아이티

▶ Tuxedo/기술자료

Application logging

누리아이티 2011. 11. 7. 14:59

#include <stdio.h>
#include <fcntl.h>
#include <time.h>

#define MAX_FILE_NAME 256

int mylog(pfx, buffer,len)
char *pfx;
char *buffer;
int   len;
{
    char   filename[MAX_FILE_NAME];
    time_t timebuf;
    struct tm *tptr;
    int    fd;
    int    ret;

    memset(filename, 0x00, sizeof(filename));

    timebuf = time((time_t *) 0);
    tptr    = localtime(&timebuf);
    sprintf(filename, "%s.%.2d%.2d%.2d", pfx, tptr->tm_mon+1, tptr->tm_mday, tptr->tm_year%100);

    if ((fd = open(filename, O_CREAT|O_WRONLY|O_APPEND, 0666) ) == -1) {
        perror("file open error");
        return -1;
    }
    ret = write(fd, buffer, len);
    if (ret != len) {
        perror("file write error");
        return -1;
    }
    close(fd);
}

위의 파일을 공통 모듈로 만들고서, 다음과 같이 사용하면 된다.

#include <stdio.h>
#include <stdlib.h>

int mylog(char *,char *,int);

void main()
{
    char buffer[100];
    int ret;

    memset(buffer,0x00,sizeof(buffer));

    ret = sprintf(buffer, "test %s %d %f", "abc",2, 3.0);
    mylog(getenv("ULOGPFX"), buffer, ret);
}

위에서 mylog() 함수의 첫번째 argument가 생성될 파일의 prefix가 된다.
예를 들어 "/tmp/test"라고 입력을 하게되면, 생성되는 파일은 /tmp/test.mmddyy 형식이 된다.