Instead of defining new to be something different, why not overload operator new?
Add these function definitions somewhere in the global namespace:
// operator new overloads
void* operator new( const size_t size, const char* file, const char* line) throw();
void* operator new( const size_t size, const size_t align, const char* file, const char* line) throw();
void* operator new[]( const size_t size, const char* file, const char* line) throw();
void* operator new[]( const size_t size, const size_t align, const char* file, const char* line) throw();
// can't easily overload operator delete
void operator delete( void* ptr ) throw();
void operator delete[]( void* ptr ) throw();
// matched to the operator new overload above in case of exceptions thrown during allocation
void operator delete( void* ptr, const char* file, const char* line) throw();
void operator delete[]( void* ptr, const char* file, const char* line) throw();
void operator delete( void* ptr, const size_t align, const char* file, const char* line) throw();
void operator delete[]( void* ptr, const size_t align, const char* file, const char* line) throw();
// global new/delete
void* operator new( size_t size ) throw();
void* operator new( size_t size, const std::nothrow_t& ) throw();
void* operator new( size_t size, size_t align ) throw();
void* operator new( size_t size, size_t align, const std::nothrow_t& ) throw();
void* operator new[]( size_t size ) throw();
void* operator new[]( size_t size, const std::nothrow_t& ) throw();
void operator delete( void* ptr, const std::nothrow_t&) throw();
void operator delete[]( void* ptr, const std::nothrow_t&) throw();
Then you can define your own new macro which calls through to the non-global versions and implement the global versions to assert or warn if they're called (to catch anything slipping through).
#define MY_NEW(s) new(s, __FILE__, __LINE__)
Your class-level overloads will work as expected if you call 'new' directly on the class. If you want to call MY_NEW on the class, you can but you'll have to redefine the overload in the class to match your new.