When you use the VALUES( ) version of INSERT INTO, you can only insert *ONE* record. *AND* you can only have ONE field between eahc set of commmas (or between the "ends" and a comma). So that subquery is returning (a) potentially many records [you know it doesn't, SQL Server doesn't] and (b) many fields.
Happily the solution to what you want to *DO*, not to your question, is easy:
Code:
CREATE PROC whatever
@REC int,
@ChangedIP varchar(15),
@ChangedBY varchar(30)
AS
INSERT INTO table_LOG
SELECT *, GETDATE(), @ChangedID, @ChangedBy FROM table WHERE record = @REC
A different "form" of the INSERT INTO works just fine.