쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
해당 지식과 관련있는 인기재능

 안녕하세요. 개발자 GP 입니다. 모든 사이트 개발은 웹사이트 제작시 웹표준을 준수하여 진행합니다.웹표준이란 국제표준화 단체...

안녕하세요^^ 저는 12년 경력의 프리랜서 퍼블리셔​&​디자이너 입니다. 반응형 웹표준 웹접근성 모바일 하드코딩 가능합니다....

워드프레스를 설치는 했지만, 그다음 어떻게 해야할지 모르시나요? 혹은 설치가 어렵나요?무료 워드프레스부터 프리미엄 테마까지 설치하여 드립니...

PHP 로깅 베스트 프랙티스

2024-10-12 16:56:50

재능넷
조회수 241 댓글수 0

PHP 로깅 베스트 프랙티스: 개발자들의 필수 가이드 🚀📝

 

 

안녕하세요, 개발자 여러분! 오늘은 PHP 로깅에 대한 베스트 프랙티스를 알아볼 건데요. 이거 진짜 중요해요! ㅋㅋㅋ 왜냐고요? 로깅은 우리 개발 생활의 구원자나 다름없거든요. 버그 잡을 때, 성능 최적화할 때, 심지어 보안 이슈 대응할 때도 로그가 없으면 우린 그냥 어둠 속을 헤매는 거나 다름없죠. 😅

그래서 오늘은 PHP 로깅의 A to Z를 쫙~ 정리해볼게요. 초보자부터 숙련자까지 모두가 얻어갈 게 있을 거예요. 자, 그럼 시작해볼까요? 🏃‍♂️💨

참고: 이 글은 '재능넷'의 '지식인의 숲' 메뉴에 등록될 예정이에요. 재능넷(https://www.jaenung.net)은 다양한 재능을 거래하는 플랫폼인데, 여러분의 PHP 로깅 스킬도 충분히 거래 가능한 재능이 될 수 있어요! 😉

1. PHP 로깅의 기초: 왜 로깅이 중요한가요? 🤔

자, 여러분! PHP 로깅이 왜 중요한지 아시나요? ㅋㅋㅋ 모르시면 지금부터 제가 쉽고 재밌게 설명해드릴게요! 🎉

로깅은 우리 애플리케이션의 '블랙박스'예요.

비행기의 블랙박스처럼, 로그는 우리 앱에서 무슨 일이 일어났는지 정확히 기록해주죠. 이게 왜 중요하냐고요?
  • 🐛 버그 추적: 로그가 없으면 버그 잡기가 진짜 힘들어요. "어디서 문제가 발생했지?"하고 헤매다가 결국 포기하게 되죠.
  • 🚀 성능 최적화: 로그를 분석하면 어떤 부분이 병목현상을 일으키는지 알 수 있어요. 성능 튜닝의 첫걸음이죠!
  • 🛡️ 보안: 해킹 시도나 비정상적인 접근을 로그로 확인할 수 있어요. 보안의 기본이에요!
  • 📊 사용자 행동 분석: 사용자들이 어떤 기능을 많이 쓰는지, 어디서 이탈하는지 등을 알 수 있죠.

그래서 말인데요, PHP 개발자라면 로깅은 정말 필수 스킬이에요! 재능넷 같은 플랫폼에서도 로깅 스킬을 가진 개발자를 찾는 경우가 많다고 해요. 여러분의 실력을 업그레이드하고 싶다면, 로깅 마스터가 되는 것도 좋은 방법이에요! 😎

꿀팁: 로깅을 시작할 때는 "너무 많이 로그를 남기는 것보다 너무 적게 남기는 게 더 위험해요!"라는 말을 기억하세요. 처음에는 좀 과하다 싶을 정도로 로그를 남기고, 나중에 필요 없는 부분을 줄여나가는 게 좋아요.

자, 이제 로깅이 왜 중요한지 아시겠죠? ㅋㅋㅋ 다음으로 넘어가기 전에 잠깐! 여러분, 혹시 로그 파일이 얼마나 커질 수 있는지 상상해보셨나요? 😱

로그 파일 크기 증가 그래프 시간 로그 파일 크기 로그 크기 증가 추세

위 그래프를 보면 시간이 지날수록 로그 파일의 크기가 어떻게 증가하는지 볼 수 있어요. 처음에는 천천히 증가하다가 나중에는 폭발적으로 늘어나죠! 이런 상황을 대비해서 로그 관리 전략을 세우는 것도 중요해요. 😉

자, 이제 로깅의 중요성에 대해 충분히 이해하셨죠? 그럼 다음 섹션에서는 PHP에서 실제로 어떻게 로깅을 구현하는지 알아볼게요! 준비되셨나요? Let's go! 🚀

2. PHP 로깅의 기본: error_log() 함수 사용하기 📝

자, 이제 본격적으로 PHP에서 로깅을 어떻게 하는지 알아볼 차례예요! 가장 기본적인 방법부터 시작해볼게요. 바로 error_log() 함수를 사용하는 거예요. 이 함수, 진짜 간단하면서도 강력해요! ㅋㅋㅋ

기억하세요: error_log() 함수는 PHP의 기본 내장 함수예요. 별도의 설정 없이 바로 사용할 수 있어요!

자, 그럼 어떻게 사용하는지 볼까요? 정말 쉬워요!


error_log("이것은 로그 메시지입니다!");

이렇게 하면 끝이에요! 😮 놀랍죠? 이 한 줄로 로그 메시지가 서버의 에러 로그 파일에 기록돼요. 보통은 Apache의 error.log 파일이나 PHP의 error log 파일에 저장되죠.

하지만 잠깐, 여기서 끝내면 재미없잖아요? ㅋㅋㅋ 좀 더 활용도 높게 사용하는 방법을 알아볼까요?

🔥 error_log() 함수 제대로 활용하기

1. 로그 레벨 지정하기

로그에도 등급이 있다는 거 아셨나요? 심각한 오류부터 그냥 정보성 메시지까지 다양한 레벨이 있어요.


error_log("심각한 오류 발생!", 0);
error_log("이건 그냥 정보예요.", 0);

위 코드에서 두 번째 인자 '0'은 기본 로그 파일에 메시지를 기록하라는 뜻이에요. 하지만 이렇게만 하면 모든 메시지가 똑같이 보이겠죠? 그래서 우리는 보통 이렇게 해요:


error_log("[ERROR] 심각한 오류 발생!");
error_log("[INFO] 이건 그냥 정보예요.");

이렇게 하면 로그 파일에서 메시지의 중요도를 한눈에 구분할 수 있어요! 👀

2. 특정 파일에 로그 남기기

때로는 로그를 특정 파일에 따로 저장하고 싶을 때가 있죠. 그럴 땐 이렇게 해요:


error_log("이 메시지는 특별해요!", 3, "/path/to/my/special_log.log");

이렇게 하면 지정한 파일에 로그가 저장돼요. 근데 주의할 점! 해당 경로에 쓰기 권한이 있어야 해요. 없으면 로그가 안 남겨져요. 😅

3. 변수 값 로깅하기

개발하다 보면 특정 변수의 값을 확인하고 싶을 때가 많죠? 이럴 때는 이렇게 해요:


$username = "코딩왕";
$score = 100;
error_log("사용자: " . $username . ", 점수: " . $score);

이렇게 하면 로그에 "사용자: 코딩왕, 점수: 100"이라고 남겨져요. 변수 값을 확인하기 쉽겠죠?

주의사항: 민감한 정보(비밀번호, 개인정보 등)는 절대 로그에 남기지 마세요! 보안 사고의 원인이 될 수 있어요. 🚫

4. 백트레이스 로깅하기

에러가 발생한 위치를 정확히 알고 싶다면? 백트레이스를 로깅하면 돼요!


function someFunction() {
    $trace = debug_backtrace();
    $traceString = '';
    foreach ($trace as $t) {
        $traceString .= $t['file'] . ' (' . $t['line'] . '): ' . $t['function'] . "\n";
    }
    error_log("에러 발생! 백트레이스:\n" . $traceString);
}

이렇게 하면 에러가 발생한 정확한 위치와 호출 스택을 알 수 있어요. 디버깅할 때 정말 유용하죠! 👍

🎭 error_log()의 장단점

자, 이제 error_log() 함수에 대해 꽤 알게 되셨죠? 그럼 이 함수의 장단점을 정리해볼게요.

장점 👍

  • 사용하기 매우 간단함
  • PHP 기본 내장 함수라 별도 설치 필요 없음
  • 기본적인 로깅 needs를 충족시킴

단점 👎

  • 로그 레벨 구분이 없음 (직접 구현해야 함)
  • 로그 포맷팅 기능이 제한적
  • 대규모 애플리케이션에서는 관리가 어려울 수 있음

이런 장단점 때문에 error_log() 함수는 주로 간단한 프로젝트나 빠른 디버깅에 사용돼요. 대규모 프로젝트에서는 좀 더 강력한 로깅 라이브러리를 사용하는 경우가 많죠.

자, 여기까지 PHP의 기본 로깅 방법인 error_log() 함수에 대해 알아봤어요. 이 함수만 잘 사용해도 기본적인 로깅은 충분히 할 수 있어요. 하지만 개발자의 길은 여기서 끝나지 않죠? ㅋㅋㅋ

다음 섹션에서는 좀 더 고급 로깅 기술에 대해 알아볼 거예요. PHP의 로깅 세계는 생각보다 더 넓고 깊답니다! 준비되셨나요? Let's dive deeper! 🏊‍♂️

3. PHP 로깅의 진화: PSR-3와 Monolog 🚀

자, 이제 우리는 PHP 로깅의 새로운 세계로 들어갈 거예요! ㅋㅋㅋ 여러분, 준비되셨나요? 이번에는 좀 더 프로페셔널한 방법을 알아볼 거예요. 바로 PSR-3 표준과 Monolog 라이브러리에 대해서요! 😎

🎭 PSR-3: PHP의 로깅 표준

PSR-3이 뭐냐고요? PHP Standard Recommendation의 약자예요. 쉽게 말해, PHP 개발자들이 "이렇게 하면 좋겠어~"하고 정한 권장사항이에요. 그 중 PSR-3은 로깅에 대한 표준이죠.

알아두세요: PSR-3을 따르면 다른 개발자들과 협업할 때 훨씬 수월해져요. 코드를 보는 순간 "아, 이렇게 로깅하는구나!"하고 바로 이해할 수 있거든요. 👀

PSR-3의 핵심은 뭘까요? 바로 LoggerInterface예요. 이 인터페이스는 로거가 가져야 할 기본적인 메소드들을 정의하고 있어요. 예를 들면:


interface LoggerInterface
{
    public function emergency($message, array $context = array());
    public function alert($message, array $context = array());
    public function critical($message, array $context = array());
    public function error($message, array $context = array());
    public function warning($message, array $context = array());
    public function notice($message, array $context = array());
    public function info($message, array $context = array());
    public function debug($message, array $context = array());
    public function log($level, $message, array $context = array());
}

우와, 많죠? ㅋㅋㅋ 하지만 걱정 마세요. 이렇게 많은 메소드가 있는 이유는 로그의 심각도를 세밀하게 구분하기 위해서예요. 'emergency'부터 'debug'까지, 상황에 맞는 로그 레벨을 선택할 수 있어요.

🌟 Monolog: PSR-3의 완벽한 구현체

자, 이제 Monolog에 대해 알아볼 차례예요! Monolog는 PSR-3을 완벽하게 구현한 PHP 로깅 라이브러리예요. 정말 강력하고 유연해서 많은 개발자들이 애용하고 있죠.

Monolog를 사용하려면 먼저 설치해야 해요. Composer를 사용한다면 정말 쉽답니다!


composer require monolog/monolog

이렇게 하면 끝! 이제 Monolog를 사용할 준비가 됐어요. 😊

Monolog의 기본적인 사용법을 볼까요?


use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// 로거 생성
$log = new Logger('my_logger');

// 로그를 파일에 저장하도록 핸들러 추가
$log->pushHandler(new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG));

// 이제 로그를 남겨봐요!
$log->info('이것은 정보성 로그예요!');
$log->warning('이건 경고 로그예요!');
$log->error('에러가 발생했어요!', ['user_id' => 123]);

우와, 멋지지 않나요? 이렇게 하면 'my_app.log' 파일에 로그가 저장돼요. 그리고 각 로그 메시지에는 시간, 로그 레벨, 메시지 내용 등이 자동으로 포함돼요. 👍

🎨 Monolog의 강력한 기능들

Monolog는 정말 다양한 기능을 제공해요. 몇 가지 재미있는 기능들을 살펴볼까요?

1. 여러 핸들러 사용하기

로그를 파일에도 저장하고, 동시에 이메일로도 보내고 싶다면?


use Monolog\Handler\StreamHandler;
use Monolog\Handler\SwiftMailerHandler;

$log->pushHandler(new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG));
$log->pushHandler(new SwiftMailerHandler($mailer, $message, Logger::ERROR));

이렇게 하면 모든 로그는 파일에 저장되고, 에러 로그는 이메일로도 전송돼요!

2. 로그 포맷 커스터마이징

로그 메시지의 형식을 바꾸고 싶다면 Formatter를 사용하면 돼요.


use Monolog\Formatter\LineFormatter;

$dateFormat = "Y n j, g:i a";
$output = "%datetime% > %level_name% > %message% %context% %extra%\n";
$formatter = new LineFormatter($output, $dateFormat);

$streamHandler = new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG);
$streamHandler->setFormatter($formatter);

$log->pushHandler($streamHandler);

이렇게 하면 로그 메시지의 형식을 원하는 대로 바꿀 수 있어요!

3. 컨텍스트 추가하기

로그에 추가 정보를 넣고 싶을 때는 컨텍스트를 사용해요.


$log->error('사용자 로그인 실패', ['username' => 'johndoe', 'ip' => '192.168.1.1']);

이렇게 하면 로그 메시지와 함께 사용자 이름과 IP 주소도 함께 기록돼요. 나중에 문제를 분석할 때 정말 유용하죠!

🏆 Monolog vs error_log()

자, 이제 Monolog와 기본 error_log() 함수를 비교해볼까요?

Monolog 👑

  • 다양한 로그 레벨 지원
  • 여러 출력 대상(파일, 이메일, 데이터베이스 등) 동시 지원
  • 로그 포맷 커스터마이징 가능
  • 추가 컨텍스트 정보 기록 가능
  • 다양한 핸들러와 프로세서 제공

error_log() 🔧

  • 사용이 매우 간단함
  • PHP 기본 내장 함수
  • 추가 설치 필요 없음
  • 기본적인 로깅 기능만 제공
  • 확장성이 제한적

보시다시피, Monolog는 훨씬 더 강력하고 유연한 기능을 제공해요. 물론 간단한 프로젝트에서는 error_log()로도 충분할 수 있어요. 하지만 프로젝트가 커지고 복잡해질수록 Monolog 같은 고급 로깅 라이브러리의 필요성이 커져요.

팁: 재능넷 같은 플랫폼에서 PHP 개발 프로젝트를 수주할 때, Monolog 사용 경험을 어필하면 좋은 인상을 줄 수 있어요. 전문성을 보여주는 좋은 방법이죠! 😉

자, 여기까지 PSR-3와 Monolog에 대해 알아봤어요. 이제 여러분은 PHP 로깅의 프로가 된 거나 다름없어요! ㅋㅋㅋ 하지만 아직 끝이 아니에요. 다음 섹션에서는 로깅 베스트 프랙티스에 대해 더 자세히 알아볼 거예요. 준비되셨나요? Let's go! 🚀

4. PHP 로깅 베스트 프랙티스: 프로처럼 로그 남기기 🏆

자, 이제 우리는 PHP 로깅의 기본부터 고급 기술까지 다 배웠어요. 근데 네, 계속해서 PHP 로깅 베스트 프랙티스에 대해 설명드리겠습니다.

자, 이제 우리는 PHP 로깅의 기본부터 고급 기술까지 다 배웠어요. 근데 이걸 어떻게 잘 활용해야 할까요? 그래서 준비했습니다. PHP 로깅의 베스트 프랙티스! 이걸 알면 여러분도 로깅 프로가 될 수 있어요. 😎

🎯 1. 적절한 로그 레벨 사용하기

로그 레벨을 제대로 사용하는 것은 정말 중요해요. 각 상황에 맞는 레벨을 사용해야 나중에 로그를 분석할 때 훨씬 편해지거든요.

  • DEBUG: 개발 중에 필요한 자세한 정보
  • INFO: 일반적인 작동 정보
  • NOTICE: 중요하지만 일반적인 이벤트
  • WARNING: 오류는 아니지만 주의가 필요한 상황
  • ERROR: 런타임 오류, 즉각적인 조치 필요
  • CRITICAL: 중대한 문제, 즉시 알림 필요
  • ALERT: 즉시 조치를 취해야 하는 상황
  • EMERGENCY: 시스템 사용 불가 상태

$log->debug('변수 값: ' . $var);
$log->info('사용자 로그인: ' . $username);
$log->warning('디스크 공간 부족 (남은 공간: 10%)');
$log->error('데이터베이스 연결 실패');
$log->critical('결제 시스템 다운');

🎨 2. 컨텍스트 정보 추가하기

로그 메시지만으로는 부족할 때가 있어요. 그럴 때는 컨텍스트 정보를 추가해주세요.


$log->error('주문 처리 실패', [
    'order_id' => 12345,
    'user_id' => 67890,
    'error_code' => 'ERR_PAYMENT_DECLINED'
]);

이렇게 하면 나중에 문제를 분석할 때 훨씬 도움이 돼요!

🔍 3. 예외 처리와 로깅

예외가 발생했을 때 로그를 남기는 것은 정말 중요해요. 예외의 모든 정보를 로그에 남겨주세요.


try {
    // 위험한 작업
} catch (Exception $e) {
    $log->error('예외 발생: ' . $e->getMessage(), [
        'exception' => $e,
        'file' => $e->getFile(),
        'line' => $e->getLine(),
        'trace' => $e->getTraceAsString()
    ]);
}

🔒 4. 민감한 정보 보호하기

로그에 민감한 정보가 남지 않도록 주의해야 해요. 비밀번호, 신용카드 정보 등은 절대 로그에 남기면 안 돼요!


// 잘못된 예
$log->info('사용자 로그인: ' . $username . ', 비밀번호: ' . $password);

// 올바른 예
$log->info('사용자 로그인', ['username' => $username]);

🔄 5. 로그 로테이션 설정하기

로그 파일이 무한정 커지지 않도록 로그 로테이션을 설정해주세요. Monolog에서는 RotatingFileHandler를 사용할 수 있어요.


use Monolog\Handler\RotatingFileHandler;

$log->pushHandler(new RotatingFileHandler(__DIR__.'/logs/myapp.log', 7));

이렇게 하면 7일치의 로그만 유지되고, 오래된 로그는 자동으로 삭제돼요.

📊 6. 구조화된 로깅

로그를 구조화된 형식(예: JSON)으로 저장하면 나중에 분석하기 훨씬 쉬워져요.


use Monolog\Formatter\JsonFormatter;

$handler = new StreamHandler(__DIR__.'/logs/myapp.log');
$handler->setFormatter(new JsonFormatter());
$log->pushHandler($handler);

$log->info('주문 완료', ['order_id' => 12345, 'amount' => 99.99]);

🚀 7. 성능 고려하기

로깅은 중요하지만, 애플리케이션의 성능에 영향을 줄 수 있어요. 불필요한 로깅은 피하고, 필요한 경우 비동기 로깅을 고려해보세요.


use Monolog\Handler\AsyncHandler;

$handler = new StreamHandler(__DIR__.'/logs/myapp.log');
$log->pushHandler(new AsyncHandler($handler));

🔍 8. 로그 모니터링 및 알림 설정

로그를 남기는 것만으로는 부족해요. 중요한 로그가 발생했을 때 알림을 받을 수 있도록 설정해주세요.


use Monolog\Handler\SlackHandler;

$log->pushHandler(new SlackHandler($slackToken, $slackChannel, $username, true, null, Logger::CRITICAL));

이렇게 하면 CRITICAL 레벨 이상의 로그가 발생했을 때 Slack으로 알림을 받을 수 있어요.

프로 팁: 로그를 남기는 것은 시작일 뿐이에요. 정기적으로 로그를 분석하고, 패턴을 찾아내세요. 이를 통해 애플리케이션의 문제점을 사전에 발견하고 개선할 수 있어요!

자, 이제 여러분은 PHP 로깅의 모든 것을 알게 되었어요! 이 베스트 프랙티스들을 적용하면, 여러분의 애플리케이션은 훨씬 더 안정적이고 관리하기 쉬워질 거예요. 그리고 문제가 발생했을 때? 훨씬 빠르게 대응할 수 있겠죠. 👍

로깅은 개발의 기본이면서도 가장 중요한 부분 중 하나예요. 여러분이 이 스킬을 마스터했다는 건, 이제 진정한 PHP 개발자로 거듭났다는 뜻이에요! 축하드려요! 🎉

그리고 기억하세요. 재능넷(https://www.jaenung.net) 같은 플랫폼에서 PHP 개발 일을 할 때, 이런 로깅 스킬을 잘 어필하면 클라이언트들에게 훨씬 좋은 인상을 줄 수 있어요. 여러분의 전문성을 보여줄 수 있는 좋은 기회랍니다! 😉

자, 이제 여러분은 PHP 로깅의 달인이 되었어요. 이 지식을 활용해서 더 나은 코드, 더 안정적인 애플리케이션을 만들어보세요. 화이팅! 💪

관련 키워드

  • PHP
  • 로깅
  • error_log()
  • PSR-3
  • Monolog
  • 로그레벨
  • 예외처리
  • 로그로테이션
  • 구조화로깅
  • 성능최적화

지식의 가치와 지적 재산권 보호

자유 결제 서비스

'지식인의 숲'은 "이용자 자유 결제 서비스"를 통해 지식의 가치를 공유합니다. 콘텐츠를 경험하신 후, 아래 안내에 따라 자유롭게 결제해 주세요.

자유 결제 : 국민은행 420401-04-167940 (주)재능넷
결제금액: 귀하가 받은 가치만큼 자유롭게 결정해 주세요
결제기간: 기한 없이 언제든 편한 시기에 결제 가능합니다

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2024 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

안녕하세요 서로커뮤니케이션입니다. 서로는 다년간의 다양한 웹 기반 프로젝트 수행을 통해 차별화된 기획력과 탁월한 고객 커뮤니케이션 능...

경력 12년 웹 개발자입니다.  (2012~)책임감을 가지고 원하시는 웹사이트 요구사항을 저렴한 가격에 처리해드리겠습니다. 간단한 ...

○ 2009년부터 개발을 시작하여 현재까지 다양한 언어와 기술을 활용해 왔습니다. 특히 2012년부터는 자바를 중심으로 JSP, 서블릿, 스프링, ...

10년차 php 프로그래머 입니다. 그누보드, 영카트 외 php로 된 솔루션들 커스터마이징이나 오류수정 등 유지보수 작업이나신규개발도 가능합...

📚 생성된 총 지식 8,496 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2024 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창